Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:92605 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 2286 invoked from network); 21 Apr 2016 19:33:23 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 21 Apr 2016 19:33:23 -0000 Authentication-Results: pb1.pair.com header.from=php@fleshgrinder.com; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=php@fleshgrinder.com; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain fleshgrinder.com from 212.232.28.124 cause and error) X-PHP-List-Original-Sender: php@fleshgrinder.com X-Host-Fingerprint: 212.232.28.124 mx203.easyname.com Received: from [212.232.28.124] ([212.232.28.124:53632] helo=mx203.easyname.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id FC/94-14036-20B29175 for ; Thu, 21 Apr 2016 15:33:23 -0400 Received: from cable-81-173-133-226.netcologne.de ([81.173.133.226] helo=[192.168.178.20]) by mx.easyname.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1atKLn-0000u8-Ca; Thu, 21 Apr 2016 19:33:19 +0000 Reply-To: internals@lists.php.net References: <570F4BB4.6020709@zend.com> <57112225.6020905@thefsb.org> <57119B5E.6070205@thefsb.org> <20160420165307.9C86E1A83D08@dd1730.kasserver.com> <31.BF.14036.A61D8175@pb1.pair.com> <20160421163334.368CF1A80188@dd1730.kasserver.com> To: Thomas Bley , guilhermeblanco@gmail.com, cornelius.howl@gmail.com, dmitry@zend.com, fsb@thefsb.org Cc: internals@lists.php.net Message-ID: <57192AEE.2000702@fleshgrinder.com> Date: Thu, 21 Apr 2016 21:33:02 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2 MIME-Version: 1.0 In-Reply-To: <20160421163334.368CF1A80188@dd1730.kasserver.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="kaCPnkUr7XQD3nwgHDu9tVJ6PXVrddmUL" X-ACL-Warn: X-DNSBL-BARRACUDACENTRAL Subject: Re: [PHP-DEV] [RFC] Nullable Types From: php@fleshgrinder.com (Fleshgrinder) --kaCPnkUr7XQD3nwgHDu9tVJ6PXVrddmUL Content-Type: multipart/mixed; boundary="2GnLCQm2UvqqadjsWEk9HHtXTJH7TfON8" From: Fleshgrinder Reply-To: internals@lists.php.net To: Thomas Bley , guilhermeblanco@gmail.com, cornelius.howl@gmail.com, dmitry@zend.com, fsb@thefsb.org Cc: internals@lists.php.net Message-ID: <57192AEE.2000702@fleshgrinder.com> Subject: Re: [PHP-DEV] [RFC] Nullable Types References: <570F4BB4.6020709@zend.com> <57112225.6020905@thefsb.org> <57119B5E.6070205@thefsb.org> <20160420165307.9C86E1A83D08@dd1730.kasserver.com> <31.BF.14036.A61D8175@pb1.pair.com> <20160421163334.368CF1A80188@dd1730.kasserver.com> In-Reply-To: <20160421163334.368CF1A80188@dd1730.kasserver.com> --2GnLCQm2UvqqadjsWEk9HHtXTJH7TfON8 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 4/21/2016 6:33 PM, Thomas Bley wrote: > Hello Tom, >=20 > with default return value I mean to return a certain value if nothing e= lse is returned (similar to method parameters with a default value). >=20 > example 1: >=20 > declare(strict_types=3D0); >=20 > function my_strpos(string $haystack, string $needle): int =3D false { > return 42; // return 42 > return false; // return false > return true; // return 1 > return; // return false > } >=20 > example 2: >=20 > declare(strict_types=3D1); >=20 > function my_strpos(string $haystack, string $needle): int =3D false { > return 42; // return 42 > return false; // return false > return true; // fatal error > return; // return false > } >=20 I definitely do not like the equal sign in there because it goes against all my mathematical knowledge; an int is false?!? Note that the same /would/ be possible with union types if given preceden= ce: function fn(): int|false {} That being said, it is way too magic! A return without an argument is *void* and has to result in a `TypeError`. Really, start to think about the types as /checked annotations/ ... /** * @return int|false */ function fn() {} function fn(): int|false {} =2E.. are equivalent and the former does not suddenly return *false* on its own and hell it shouldn't. --=20 Richard "Fleshgrinder" Fussenegger --2GnLCQm2UvqqadjsWEk9HHtXTJH7TfON8-- --kaCPnkUr7XQD3nwgHDu9tVJ6PXVrddmUL Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAEBCAAGBQJXGSryAAoJEOKkKcqFPVVrq4AP/AwC9TuScqFu8QXvP1WGKx+3 /lG5oE6IhZLNVTg+ebur4SzilPiaks8FiI1xTE/itVjUOKbGxJ8dldr7Ogrtiy0b 81HdeLfjpH6+TGe/N4327sdAEz7ZWSHMRzVfuz9bIo1dTTQkVFLI9Zw4sRnG2su+ XC63h2qeo8+SmuYBr/BMrUSppOShJKN9pFaLj36TTzzilL3wt8fGWtT2lT7dhke5 nqvhjlAKq2bOpav1kGUsMdz38vV4u5AGrztimFEDmGjmy+OUGV6WMIovh/QRTvhD qqcjPh/vz5pyEdWKVTv1NzJ46Yl87cq+2/y8XVyAbKmPzDmEVjzjqtARoMpad/yV 49LoxpcXXhsuFMKifmjrCrcBLhGqkDd1C8XE0y9KTqHofACszpbULBCu4L87TsPg kidEFWAXiG3gQwy7Rm8ubsWql6P6HARLmB8l/bggfUeC8mAQ8IWZGuH0PByjtYDV 78NgULGz7MHxr+0md8iyflwa8nE4oJYA89eaJFzOjbDeLlpAdJFnoMqBIJmON67e Pa6dQmrYP83+8Azn/IJn9l1wcEFwx3mDuMoFPW2+QHBpNxshH0P1vwqcyH1VtNHG orfDenx6R0hE9VXt0HVLk0Mc+NFnRGwDo+fg6tjZd1WTPwSdh4Bit+5+HQrci5Go axs5rmxo6fGsumu5IZhk =DYLK -----END PGP SIGNATURE----- --kaCPnkUr7XQD3nwgHDu9tVJ6PXVrddmUL--