Re: Union types | true pseudo-type
| From: | Nikita Popov | Date: | Mon, 27 Jan 2020 09:42:52 +0000 |
| Subject: | Re: Union types | true pseudo-type | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-108263@lists.php.net to get a copy of this message | ||
On Mon, Jan 20, 2020 at 6:30 PM Benjamin Morel <benjamin.morel@gmail.com>
wrote:
> Hi internals,
>
> I'd like to bring back the topic of supporting "true" as a type in PHP 8
> union types.
> Now that the RFC
> <https://wiki.php.net/rfc/union_types_v2> has been
> successfully voted, I'd like to revive the discussion about adding the
> "true" pseudo-type in addition to "false".
>
> In addition to my Packagist survey
> <https://externals.io/message/106844#107304>, I'd
> like to point out that I
> just came across a native method in the SSH2 extension, that does use true
> as a type:
>
> https://www.php.net/manual/en/function.ssh2-auth-none.php
>
>
> Returns TRUE if the server does accept "none" as an authentication method,
> > or an array of accepted authentication methods on failure.
>
>
>
> Of course, you could type-hint it array|bool, but the same could be said
> for |false.
>
> Thoughts?
>
Generally I'm fine with also allowing the "true" type. We certainly have
quite a few extension methods that return isolated true values for legacy
reasons. However, before "true" is allowed, it is important to answer the
two questions at the end of
https://wiki.php.net/rfc/union_types_v2#literal_types.
Namely, how do true/false interact with weak typing coercions (currently
"false" only accepts "false", but not 0 or "") and whether true|false
should be equivalent to bool (also related to the previous question).
Regards,
Nikita