Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:98354 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 15053 invoked from network); 25 Feb 2017 21:56:23 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 25 Feb 2017 21:56:23 -0000 X-Host-Fingerprint: 95.148.67.80 unknown Received: from [95.148.67.80] ([95.148.67.80:29794] helo=localhost.localdomain) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 7E/7B-11648-68DF1B85 for ; Sat, 25 Feb 2017 16:56:22 -0500 Message-ID: <7E.7B.11648.68DF1B85@pb1.pair.com> To: internals@lists.php.net References: <011257B7-C709-4652-909C-5F2B02B0A2E4@gmail.com> <60.D6.11648.6EE91B85@pb1.pair.com> Date: Sat, 25 Feb 2017 21:56:18 +0000 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:49.0) Gecko/20100101 Firefox/49.0 SeaMonkey/2.46 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Posted-By: 95.148.67.80 Subject: Re: [PHP-DEV] Nullable types and strict type-hinting with defaultnull value From: ajf@ajf.me (Andrea Faulds) Hi, Niklas Keller wrote: > 2017-02-25 16:12 GMT+01:00 Andrea Faulds : > >> Rowan Collins wrote: >> >>> On 23 February 2017 09:15:27 GMT+00:00, "MichaƂ" wrote: >>> >>>> And what about situation when someone is forcing >>>> declare(strict_types=1)? I think, it's really a good place to force >>>> proper types. Including nulls. >>>> >>> >>> strict_types controls the behaviour of *calling* functions, but the check >>> here would have to be when *defining* the function: it would give an error >>> that the function definition is invalid, like if you say function foo(int >>> $bar='hello') >>> >>> Unless you had some other behaviour in mind? >>> >> >> In addition to this, if we wanted to prohibit implicit nullability in >> parameter definitions, we should have done it when we introduced >> declare(strict_types=1); in the first place, and that ship has sailed. > > > At that point we didn't even have nullable types, yet. Sure. > > Also, strict_types should do one thing, not all the things related to types. > I don't disagree. My point is that now that strict_types has been introduced, we have to maintain backwards-compatibility with code that uses it currently. We can't just tack new behaviour changes onto it without careful consideration, because that can break existing strict_types code. -- Andrea Faulds https://ajf.me/