Re: [RFC] Nullable Return Type Declaration
| From: | Marcio Almada | Date: | Mon, 18 Apr 2016 05:22:49 +0000 |
| Subject: | Re: [RFC] Nullable Return Type Declaration | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-92395@lists.php.net to get a copy of this message | ||
Hi!
2016-04-17 23:56 GMT-04:00 Larry Garfield <larry@garfieldtech.com>:
> On 04/17/2016 02:19 AM, Fleshgrinder wrote:
>
>> Everything always has pros and cons and I do not think that there is one
>> answer to all of these questions. Different languages handle this
>> problem differently. PHP has
NULL and we should keep it
>> this way. To
>> minimize bugs resulting from unchecked NULL usage a
>> compiler feature
>> could be implemented that warns a developer in such cases. We already
>> have it for uncatched exceptions (although IDEs are currently not
>> telling one about that; Eclipse does in Java though).
>>
>
> Rather than debate the relative merits of Null as a concept, since I think
> all agree removing Null from the language is not even a thing, what do you
> think of my recommendation to NOT have the ? shorthand for "or null" on
> types, but keep the |null for union types? That is, if you want to return
> Foo or null, you have to use the long-hand version:
>
> function foo($a) : Foo|null
>
> That
>
> 1) Allows for explicit or-null behavior.
> 2) Doesn't make it quite so easy, which hopefully discourages (but does
> not prohibit) its usage.
> 3) Neatly avoids the ?Foo / Foo? question entirely.
>
> I think that's a win-win arrangement.
>
>
> --Larry Garfield
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>
I can agree with that.
Language design wise, if you have no way to forecast how language features
independently proposed are going to interact then it's a good idea to have
a converging strategy. Fortunately, this seems to be happening almost
spontaneously towards union types representation, as in the "multiple
catch" RFC (https://wiki.php.net/rfc/multiple-catch) now in voting phase.
Even if we decide not to commit to a full union types implementation now,
the design process will be much easier in the future if we decide to use
Foo|null instead of Foo? or ?Foo and we will not end up with 2 or 3 ways
alternative to declare the same thing.
Cheers,
Márcio