Re: [RFC] [DISCUSSION] Scalar Pseudo-type
| From: | Alexander Lisachenko | Date: | Tue, 26 Dec 2017 16:20:55 +0000 |
| Subject: | Re: [RFC] [DISCUSSION] Scalar Pseudo-type | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-101423@lists.php.net to get a copy of this message | ||
In some distant future it could be implemented in more natural way with
classes for primitive types and automatic boxing/unboxing for primitive
built-in types:
Php\Type\Object
Php\Type\Scalar
⌊ Php\Type\String
⌊ Php\Type\Integer
⌊ Php\Type\Float
⌊ Php\Type\Boolean
Php\Type\Array
And it will be easy to typehint all scalars via common parent class:
public function acceptsScalar(Scalar $scalarValue).
But all scalar objects in this case should be implemented as immutable or
should be passed as copy (like arrays). So, I would vote no for adding
special scalar typehint without mapping it to the common class or
interface, like iterable => Traversable, callable => Closure, etc
Best regards, Alexander
2017-12-26 18:59 GMT+03:00 Andreas Heigl <andreas@heigl.org>:
> Hey All.
>
> > Am 26.12.2017 um 14:38 schrieb Sebastian Bergmann <sebastian@php.net>:
> >
> >> Am 24.12.2017 um 15:34 schrieb Fleshgrinder:
> >> I prepared a PR to add the
scalar pseudo-type to PHP
> >> after the
> >> discussions around adding a mixed pseudo-type. I
> >> strongly believe that
> >> it makes sense to provide the most common primitive union types with
> >> handy aliases even if we are going to add union types in the future to
> PHP.
> >
> > Thank you, Richard, for working on this.
> >
> > I spent a lot of time this year introducing scalar type declarations into
> > existing code bases. In quite a few cases I was not able to do so because
> > the existing code works with parameters that can be of two or more scalar
> > types. With PHP 7.2, I can only document this outside of the code using
> > @param annotations (until the code has been refactored to work with only
> > one parameter type).
> >
> > With a "scalar" type declaration I would not have to fall back to @param
> > annotations and could express the type in actual syntax.
>
> Just a stupid question from someone that isn't following all the
> discussions here. So forgive me if the question was already asked and
> answered.
>
> What would be wrong with a "composed type hint"? Something like
> int|float|double $numeric. Or array|Traversable $iterator?
>
> It would allow people to add "mixed" typehints without having to introduce
> multiple typehints that combine different scalar typehints. And it could
> even allow typehinting different Objects in one function.
>
> Yes, it allows people to shoot themselfes into their own feet.
>
> And I'd only allow that for parameter types and never ever for return
> types.
>
> But it might be an idea.
>
> Cheers
>
> Andreas
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>