Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:88083 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 83623 invoked from network); 7 Sep 2015 09:52:55 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 7 Sep 2015 09:52:55 -0000 Authentication-Results: pb1.pair.com header.from=mail@dasprids.de; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=mail@dasprids.de; spf=permerror; 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:59910] helo=mail.dasprids.de) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id ED/66-40368-67E5DE55 for ; Mon, 07 Sep 2015 05:52:55 -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 AF2D634404F5; Mon, 7 Sep 2015 11:52:51 +0200 (CEST) To: John LeSueur , =?UTF-8?Q?Pavel_Kou=c5=99il?= References: <55E4B9AA.9060906@dasprids.de> Cc: PHP internals Message-ID: <55ED5E78.7090900@dasprids.de> Date: Mon, 7 Sep 2015 11:52:56 +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="------------ms060808040809090105040908" Subject: Re: [PHP-DEV] Generic classes and methods RFC From: mail@dasprids.de (Ben Scholzen) --------------ms060808040809090105040908 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Hi, On 05.09.2015 21:48, John LeSueur wrote: > Hi Ben, > > Now that I have substantive questions, including the list :) > > In the following: > > class SomeList { > public static function fromArray(array $a): SomeList { > $list =3D new SomeList(); > $list2 =3D new SomeList(); > return $list; > } > } > > $list =3D SomeList::fromArray([1, 2]); > > When fromArray() executes, what type is $list2? or is that an error? If= > it's an error, what advantage is there to having distinct generic types= > on the class vs. the method? How do I specify the two generic types I > want to use? The $list2 line would definitely be an error, since the hint is=20 not known in the static context. The advantage is simply that you can=20 pass a type through the a static method to create an object with a=20 specific type for you. > Another thing I'd like to make sure I understand, how does this interac= t > with strict types (and non-strict)? > > new Entry(1, 2);//I assume it should type-juggle > > declare(strict_types =3D 1); > new Entry(1, 2);//I assume it should throw error I didn't think too much about this, but I guess you are right that for=20 scalar types, the strict_type declaration should apply in the user contex= t. > I'm interested to see if PHP can get generics going. I hope hashing out= > some more details might garner more interest. > > > Thanks, > John --=20 Ben Scholzen http://www.dasprids.de --------------ms060808040809090105040908 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 DQEHATAcBgkqhkiG9w0BCQUxDxcNMTUwOTA3MDk1MjU2WjAvBgkqhkiG9w0BCQQxIgQgv0jA 8XeURVkz5ku+6HP3tgcesWiSBlOrcILSfsVrZfwwbAYJKoZIhvcNAQkPMV8wXTALBglghkgB ZQMEASowCwYJYIZIAWUDBAECMAoGCCqGSIb3DQMHMA4GCCqGSIb3DQMCAgIAgDANBggqhkiG 9w0DAgIBQDAHBgUrDgMCBzANBggqhkiG9w0DAgIBKDCBpAYJKwYBBAGCNxAEMYGWMIGTMIGM MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJl IERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzE4MDYGA1UEAxMvU3RhcnRDb20gQ2xhc3Mg MiBQcmltYXJ5IEludGVybWVkaWF0ZSBDbGllbnQgQ0ECAk+UMIGmBgsqhkiG9w0BCRACCzGB lqCBkzCBjDELMAkGA1UEBhMCSUwxFjAUBgNVBAoTDVN0YXJ0Q29tIEx0ZC4xKzApBgNVBAsT IlNlY3VyZSBEaWdpdGFsIENlcnRpZmljYXRlIFNpZ25pbmcxODA2BgNVBAMTL1N0YXJ0Q29t IENsYXNzIDIgUHJpbWFyeSBJbnRlcm1lZGlhdGUgQ2xpZW50IENBAgJPlDANBgkqhkiG9w0B AQEFAASCAQBmS78Rw9U92SFXDN/qa9OIgh7RgVVn06JltELjVGQiAj+U8JZ53Y8/wAukAFG2 d/86S5frNDWa4Y53ck7GTuoisCOrF0pxsO28dWIJu+Do4bX9bqZCI0EfMpwrQOd8cdiDglue 4KuByf7uwtulaKGJPZtGVCQc6ZKkkK85bN4OaKE6PTem/JdLsXQtF4y4R1TNiY2D2wso1pdZ 1DFPW8EheOpAW3q/yCj9JLnsdypieZ2KHiXuVBWtHwwD3b/9cjzJVZdepwuSSliyZsB2kjtD gi+HmbaI43fZIapsKs5uDk1bDmgk80da+vK15UNqFWriC4CQHsAWieQ843vaYu+LAAAAAAAA --------------ms060808040809090105040908--