Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:88157 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 49912 invoked from network); 11 Sep 2015 16:55:44 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 11 Sep 2015 16:55:44 -0000 Authentication-Results: pb1.pair.com smtp.mail=mail@dasprids.de; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=mail@dasprids.de; sender-id=unknown Received-SPF: error (pb1.pair.com: domain dasprids.de from 46.4.80.198 cause and error) X-PHP-List-Original-Sender: mail@dasprids.de X-Host-Fingerprint: 46.4.80.198 server1.dasprids.de Received: from [46.4.80.198] ([46.4.80.198:45424] helo=mail.dasprids.de) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 61/52-37684-E8703F55 for ; Fri, 11 Sep 2015 12:55:43 -0400 Received: from [192.168.0.86] (unknown [5.158.132.254]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: mail@dasprids.de) by mail.dasprids.de (Postfix) with ESMTPSA id 61ADF34404F5 for ; Fri, 11 Sep 2015 18:55:39 +0200 (CEST) To: internals@lists.php.net References: <55E4B9AA.9060906@dasprids.de> <55F20B8D.3010805@dennis.birkholz.biz> <55F20E72.6050309@dasprids.de> Message-ID: <55F30791.3080207@dasprids.de> Date: Fri, 11 Sep 2015 18:55:45 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="------------ms070408020106030000010008" Subject: Re: [PHP-DEV] Generic classes and methods RFC From: mail@dasprids.de (Ben Scholzen) --------------ms070408020106030000010008 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Well, with the example, there's a good reason to have them separated: class Factory { public static function createFoo() { return new Foo(); } public static function createBar() { return new Bar(); } } class Foo {} class Bar {} The factory instance does not know to need about , this is purely a=20 type for the method to be able to create another class, which requires=20 that type. You couldn't put this definition on the Factory class. On 11.09.2015 18:08, Levi Morrison wrote: > On Fri, Sep 11, 2015 at 10:00 AM, Korvin Szanto wrote: >> Levi, >> It's my understanding that the "type variable" is a member of the inst= ance >> and not of the class. In at least java, generics are unavailable in st= atic >> context[1] though they can be specifically defined on the static metho= d >> itself[2]. >> >> [1] >> http://stackoverflow.com/questions/936377/static-method-in-a-generic-c= lass >> [2] https://docs.oracle.com/javase/tutorial/extra/generics/methods.htm= l >> >> On Fri, Sep 11, 2015 at 8:28 AM Levi Morrison wrote: >>> >>> On Thu, Sep 10, 2015 at 5:12 PM, Ben Scholzen 'DASPRiD' >>> wrote: >>>> Hi Dennis, >>>> >>>> thanks for your feedback, see my answers below: >>>> >>>>> 1. static methods: >>>>> >>>>> class Foo { >>>>> public static function test() { >>>>> } >>>>> } >>>>> >>>>> how can I call the method: >>>>> a) Foo::test() >>>>> or >>>>> b) Foo::test() >>>>> >>>>> in case b), would the generic methods not be a duplication? >>>> >>>> >>>> Case a) is correct here. A static method is not in the context of an= >>>> instance, so it doesn't know about the class boxing by itself. >>> >>> I think b would be correct. Can you explain this rationale a bit more= ? > > This may be how it works in Java, but this is not Java. All behavior > must be outlined and justified, especially because not all languages > behave the same as Java with regards to generic-like behavior. Notably > C++ does not share this characteristic. If this generic ability is > confined only to classes/interfaces and only to instance methods that > is a large limitation. Even if that is what is decided there must be > rationale for choosing it to be that way. > --=20 Ben Scholzen http://www.dasprids.de --------------ms070408020106030000010008 Content-Type: application/pkcs7-signature; name="smime.p7s" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="smime.p7s" Content-Description: S/MIME Cryptographic Signature MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCC DLQwggY0MIIEHKADAgECAgEgMA0GCSqGSIb3DQEBBQUAMH0xCzAJBgNVBAYTAklMMRYwFAYD VQQKEw1TdGFydENvbSBMdGQuMSswKQYDVQQLEyJTZWN1cmUgRGlnaXRhbCBDZXJ0aWZpY2F0 ZSBTaWduaW5nMSkwJwYDVQQDEyBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe Fw0wNzEwMjQyMTAyNTVaFw0xNzEwMjQyMTAyNTVaMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UE ChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUg U2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3MgMiBQcmltYXJ5IEludGVybWVkaWF0 ZSBDbGllbnQgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDLKIVFnAEs+xny q6UzjCqgDcvQVe1dIoFnRsQPCFO+y92k8RK0Pn3MbQ2Gd+mehh9GBZ+36uUQA7Xj9AGM6wgP hEE34vKtfpAN5tJ8LcFxveDObCKrL7O5UT9WsnAZHv7OYPYSR68mdmnEnJ83M4wQgKO19b+R t8sPDAz9ptkQsntCn4GeJzg3q2SVc4QJTg/WHo7wF2ah5LMOeh8xJVSKGEmd6uPkSbj113yK Mm8vmNptRPmM1+YgmVwcdOYJOjCgFtb2sOP79jji8uhWR91xx7TpM1K3hv/wrBZwffrmmEpU euXHRs07JqCCvFh9coKF4UQZvfEg+x3/69xRCzb1AgMBAAGjggGtMIIBqTAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrlWDb+wxyrn3HfqvazHzyB3jrLsw HwYDVR0jBBgwFoAUTgvvGqRAW6UXaYcwyjRoQ9BBrvIwZgYIKwYBBQUHAQEEWjBYMCcGCCsG AQUFBzABhhtodHRwOi8vb2NzcC5zdGFydHNzbC5jb20vY2EwLQYIKwYBBQUHMAKGIWh0dHA6 Ly93d3cuc3RhcnRzc2wuY29tL3Nmc2NhLmNydDBbBgNVHR8EVDBSMCegJaAjhiFodHRwOi8v d3d3LnN0YXJ0c3NsLmNvbS9zZnNjYS5jcmwwJ6AloCOGIWh0dHA6Ly9jcmwuc3RhcnRzc2wu Y29tL3Nmc2NhLmNybDCBgAYDVR0gBHkwdzB1BgsrBgEEAYG1NwECATBmMC4GCCsGAQUFBwIB FiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xpY3kucGRmMDQGCCsGAQUFBwIBFihodHRw Oi8vd3d3LnN0YXJ0c3NsLmNvbS9pbnRlcm1lZGlhdGUucGRmMA0GCSqGSIb3DQEBBQUAA4IC AQA6qScNyNO0FpHvaZTQacVMXH33O51KyEKSRw3IvdQxRu31YR0ZDGdSfgSoOVDVMSBSdmfQ fdDInHPzV3LO5DwUXZ+lxjv7z3PO2OkfnFkvTXPfn6dxJ5rJveDsTsCPcJ/Kp6/+qN5g+J6D /SaYcFD018B6L42r0Z4VEBy36P4tjRtF14Ex10tl5tJFVKM16qWKQHbpjIgf73s49UB0CQ5l HT2DHKfq3oPfdNc5Mk93w1v4ryVb+qVrZIej8NsrWU+5r4O2IV91edDb/OtHFddZqHFFXKgS 79IHE/hwQ2LW7r3sTX7cDUCg+dfdwO8zeLxuwk2JF8crUoyrl66RGrRIhT8VoG/OJ1Y9uUlO av69V4cG8upi4ZG2l7JZFbcBFk91Wp+Payo5SuF61CmGFrZ386umkmpObtFacXda2O/bVoQ9 xHQrzoTc/0KZTWvlZCLK3Ke/vGYT9ZdW9lOjGsSFbXrlTA919L84iMK+48WGnvRWY28ZaVHp ql43AtEGhXze6iNCbEDACy+4hkQYOytAqDgcxAnQ937mYpeZFPyz/XK9QSt9VNFMuudWxZwD DDJKoQAoSG59Hou9lZ26UrK60nRdAQBmEPL8h2nuWgoPh++XVQld9yuhbsWa39Pck8/lcfz5 HUVGJF5mc/zk38iV7FDlF68puiryNq2KXHEpOTCCBngwggVgoAMCAQICAk+UMA0GCSqGSIb3 DQEBBQUAMIGMMQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UE CxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRD b20gQ2xhc3MgMiBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0EwHhcNMTQwNzE2MTAw MDA3WhcNMTYwNzE2MDg0NDU3WjCBljEZMBcGA1UEDRMQbWM2UUhYMURzM2RzcU05MzELMAkG A1UEBhMCREUxGzAZBgNVBAgTEkJhZGVuLVd1ZXJ0dGVtYmVyZzESMBAGA1UEBxMJS2FybHNy dWhlMRowGAYDVQQDExFCZW5qYW1pbiBTY2hvbHplbjEfMB0GCSqGSIb3DQEJARYQbWFpbEBk YXNwcmlkcy5kZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANXLSvxoloTyTN3c TqeuaJwdSnmVmOd9yss5uUa9z5MLb8NM1Q0LEQyiR1qdjYdfswMj3vj+TLypc2Uiz7vWZbD6 Mnb+ZFvgNdpqZIxvraFVS03vD8lWiUCW1RiN7vMsNbTjLKryWoHYz68+taLT94EysoTxcmLD gxUDFpiDjPxZhqRI8EF+hE2110N5yqSo2u9QyOxiUDVGK0I+y00Xztcmw4MkjvI956KC/vC3 hjn/4KTCQ7GaX2j2pvA5NbEDJeHyU+meqe0rLdMpZ3qgP80w/B05VTo+PNbGFFrECVsh5zWy e1+jHbJakmivmFtVWHYI2oRJ8xZ06TiqmrV3RBkCAwEAAaOCAtYwggLSMAkGA1UdEwQCMAAw CwYDVR0PBAQDAgSwMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDBDAdBgNVHQ4EFgQU jHPWRhox44dOFMkk4jN/EY4csGcwHwYDVR0jBBgwFoAUrlWDb+wxyrn3HfqvazHzyB3jrLsw GwYDVR0RBBQwEoEQbWFpbEBkYXNwcmlkcy5kZTCCAUwGA1UdIASCAUMwggE/MIIBOwYLKwYB BAGBtTcBAgMwggEqMC4GCCsGAQUFBwIBFiJodHRwOi8vd3d3LnN0YXJ0c3NsLmNvbS9wb2xp Y3kucGRmMIH3BggrBgEFBQcCAjCB6jAnFiBTdGFydENvbSBDZXJ0aWZpY2F0aW9uIEF1dGhv cml0eTADAgEBGoG+VGhpcyBjZXJ0aWZpY2F0ZSB3YXMgaXNzdWVkIGFjY29yZGluZyB0byB0 aGUgQ2xhc3MgMiBWYWxpZGF0aW9uIHJlcXVpcmVtZW50cyBvZiB0aGUgU3RhcnRDb20gQ0Eg cG9saWN5LCByZWxpYW5jZSBvbmx5IGZvciB0aGUgaW50ZW5kZWQgcHVycG9zZSBpbiBjb21w bGlhbmNlIG9mIHRoZSByZWx5aW5nIHBhcnR5IG9ibGlnYXRpb25zLjA2BgNVHR8ELzAtMCug KaAnhiVodHRwOi8vY3JsLnN0YXJ0c3NsLmNvbS9jcnR1Mi1jcmwuY3JsMIGOBggrBgEFBQcB AQSBgTB/MDkGCCsGAQUFBzABhi1odHRwOi8vb2NzcC5zdGFydHNzbC5jb20vc3ViL2NsYXNz Mi9jbGllbnQvY2EwQgYIKwYBBQUHMAKGNmh0dHA6Ly9haWEuc3RhcnRzc2wuY29tL2NlcnRz L3N1Yi5jbGFzczIuY2xpZW50LmNhLmNydDAjBgNVHRIEHDAahhhodHRwOi8vd3d3LnN0YXJ0 c3NsLmNvbS8wDQYJKoZIhvcNAQEFBQADggEBAMXWuJGblFGdUPNS1MkFccBf0Z/8N2TCA/l/ Q9p8CmzBWrCbN1qbpIuXYQZBJnepjBQx4KZrnYBddqzHOOYUB4yD72TsGaXLpSVg7Btf1uKK wkL/RAAVdRoUMnuyDgQIzP6A7KOkAU+ZbQr7mW+VXinUWz1TwQWEoawb6cnCll3eVF8Xw9R0 lFuOYFb7wYd6a5yzaRrajR6OO1JC25xVlJOK4FlfBvGZrpUufPtYB2aRVk0Mj/t/XbTjS/Xn 4nut8w6ZI9gT3hS56PPQhLUslIGY5qBelkwVOeM9cMVNYSMVtbbynszXxGrdPPsj/rvdejK1 LSGZLTEPxGZ4cbFx2i0xggPqMIID5gIBATCBkzCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoT DVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsTIlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNp Z25pbmcxODA2BgNVBAMTL1N0YXJ0Q29tIENsYXNzIDIgUHJpbWFyeSBJbnRlcm1lZGlhdGUg Q2xpZW50IENBAgJPlDANBglghkgBZQMEAgEFAKCCAicwGAYJKoZIhvcNAQkDMQsGCSqGSIb3 DQEHATAcBgkqhkiG9w0BCQUxDxcNMTUwOTExMTY1NTQ1WjAvBgkqhkiG9w0BCQQxIgQgSIpR /hzHNktM5rbYq4KuLsWDDhEVXSOz3SIrmHF83OgwbAYJKoZIhvcNAQkPMV8wXTALBglghkgB ZQMEASowCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG 9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCBpAYJKwYBBAGCNxAEMYGWMIGTMIGM MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJl IERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3Mg MiBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0ECAk+UMIGmBgsqhkiG9w0BCRACCzGB lqCBkzCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsT IlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0Q29t IENsYXNzIDIgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENBAgJPlDANBgkqhkiG9w0B AQEFAASCAQCx4pdOMDLEsorxhhTud1u8UZ4iYGtMY0VAl6sZFHj+5bw6Nc31oJd4kzodELny qnF5thEaUn/OkCCTJfLdJ665qkRLaQXnVdGRGypalP8X0CwgkbGPgsZ60xsteIi8U8NEdz26 KMFZVQhqNKHvIbT8R9lzGnQHfWGAVBwRvPOhSiKoRgt+rJYhMQxgaJieXHlhJjtvUnoDZ8ZF 7GyoUVNb4x+nQ7b/CeN+psHGQLjZmVjxtqe/HiiqbegCovb5MRbPkOmZi/uJzr+WXb7336mP 9tn7/K9WLp5dJ1uv667KhVl12Ga62Vgl7L2nzWhgss7LiuN0ZDJd1QKenl/JzHXzAAAAAAAA --------------ms070408020106030000010008--