New Union Type in PHP – 8
A new RFC has been finished voting and accepted for PHP – 8. That is “Union Types”, which is an extension of PHP’s type system.
A union type accepts values of multiple different types, rather than a single one. PHP already supports two special union types:
Type
ornull
, using the special?Type
syntax.array
orTraversable
, using the specialiterable
type.
However, arbitrary union types are currently not supported by the language. A Union type essentially declares an OR condition for multiple types in the argument type, return type or property type declaration.
The RFC Proposal:
Union types are specified using the syntax T1|T2|…
and can be used in all positions where types are currently accepted (Taken from the RFC example):
1 2 3 4 5 6 7 8 9 10 11 | class Number { private int|float $number; public function setNumber(int|float $number): void { $this->number = $number; } public function getNumber(): int|float { return $this->number; } } |
Union types support all types currently supported by PHP, with some caveats. This is just a glimpse, to learn more please read the PHP RFC: Union Types 2.0.