An annotation of the form
Type1|Type2|Type3 is a Union Type.
Type3 are all acceptable possible types of that union type.
Type3 are each atomic types.
Union types can be generated in a number of different ways, for example in ternary expressions:
<?php $rabbit = rand(0, 10) === 4 ? 'rabbit' : ['rabbit'];
$rabbit will be either a
string or an
array. We can represent that idea with Union Types – so
$rabbit is typed as
string|array. Union types represent all the possible types a given variable can have.
PHP builtin functions also have union-type returns -
strpos can return
false in some situations,
int in others. We represent that union type with