On Mon, Apr 20, 2020 at 5:17 PM Larry Garfield <la...@garfieldtech.com>
wrote:

> On Mon, Apr 20, 2020, at 9:15 AM, Sara Golemon wrote:
> > On Mon, Apr 20, 2020 at 8:52 AM Larry Garfield <la...@garfieldtech.com>
> > wrote:
> >
> > > On Mon, Apr 20, 2020, at 6:17 AM, Dan Ackroyd wrote:
> > > > Here is an RFC for adding a 'mixed' type to the language:
> > > > https://wiki.php.net/rfc/mixed_type_v2
> > > >
> > >
> > > I am not against this, but now that we have Union types what places are
> > > there where the currently available type declarations are insufficient?
> > > Resource seems like the only remaining gap where you'd be forced to use
> > > `mixed` instead of a union.
> > >
> > > I imagine some type combinations get pretty wide. Like, this is
> verbose AF.
> >
> > null|bool|int|float|string|array|object|resource
>
> Sure, but how often is that an actual description of what the code
> accepts?  I... cannot actually envision what code would actually accept
> that mess. :-)
>

I can think of quite a few:

- var_dump, print_r, more generally debugging/logging functions and
wrappers thereof
- json_encode, serialize, and more generally serialization and encoding
functions, as return value as well for the inverse operations
- database/nosql related functions (bindParam, bindValue) and as return
value from generic functions like fetch()
- Xpath::evaluate
- ldap query functions

And wrappers of these extensions could benefit from passing on the mixed
type explicitly.


> With union types and stringable already on the way, I'm not sure what
> other non-hypothetical use cases would still be that fugly that you'd now
> need to fall back to `mixed`.  (I still think intersection types are
> needed, but that's a separate matter.)  There may be, but I cannot think of
> them.
>
> > For the long term good of the language I'd prefer type aliases (or
> typedefs
> > or usings or whatever you want to call them.
> >
> > use mixed = null|bool|int|float|string|array|object|resource;
> > use scalar = null|bool|int|float|string;
> > use number = int|float;
>
> Concur.
>
> > That said, baking 'mixed' in as an implicit alias of the above isn't
> > problematic for that future.
> >
> > -Sara
>
> Concur.
>
> --Larry Garfield
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

Reply via email to