On Mon, Jan 27, 2020 at 11:43 AM Nikita Popov <nikita....@gmail.com> wrote:

> On Mon, Jan 20, 2020 at 6:30 PM Benjamin Morel <benjamin.mo...@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
>

Hi,

I think we can continue in a similar conservative approach, without
coercion for *true*, similar as for *false*.
For the cases mentioned so far, we are interested in exactly the true
value, not true-ish value like 1.

This would make *true|false* not equivalent with *bool* when strict_types
is not enabled
and equivalent when strict_types is enabled.

Alex

Reply via email to