Type dupliqué
<?php
class_alias('a', 'c');
use A as B;
// duplicate hidden type
function foo(array | iterable $b) {}
// d8plicate type
function foo2(a | b $b) {}
// a and c are always considered distinct
function foo3(a | c $b) {}
// PHP is smarter than this poor usage of DNF
function foo4((a & b) | (b & a) $b) {}
?>
Les types union vérifient les types dupliqués, donc array|array n’est pas possible, ni si une classe est aliasée avec une expression use : en revanche, cela est valide avec un alias de classe créé avec class_alias().
Le dernier cas est le type union qui masque réellement le type : ici, iterable inclut array, donc PHP se plaint d’un doublon qui n’est pas visible au premier regard.
Notez que les types d’intersection vérifient également les types dupliqués.
See Also
- Duplicate types [Try me]
PHP Error Messages
PHP Features
Last updated: 11 October 2026