On Wed, 2016-04-20 at 17:57 +1000, Jesse Schalken wrote:
>
> With unions:
>
> function foo(Bar|string $b) {
>
> if (is_string($b)) {
> // ...
> } else {
> // I know $b is a Bar here. I don't need to check. :)
> }
> }
I' still missing a real-life use case for this. There's no operation I
can come up with which works with an object or string.
Unions between object types should be handled via interface.
The only relevant union types I found till now are
array | Traversable
array | Countable
and eventually
array | Offset[Get|Set]
The last one is a bit critical due to the fact that arrays are value
types, whereas objects are reference types so
function ($a) {
$a[] = 42;
}
behaves notably differently between objects and arrays. So that case
might need some thinking. For the others instead of a generic union type
I'd prefer a special array-solution.
johannes
signature.asc
Description: This is a digitally signed message part
