PHP 7 introduit 2 nouveaux opérateurs : ??
et <=>
, nommés respectivement Null coalescent et Spaceship.
Null coalescent
Cet opérateur permet de simplifier l'affectation des valeurs par défaut via les opérateurs ternaires :
$value = (isset($x) && $x !== null) ? $x : $defaultValue;
peut maintenant s'écrire :
$value = $x ?? $defaultValue;
Comme l'indique la documentation, il permet de vérifier si une variable existe et est non nulle.
Remarque :
Il ne faut pas le confondre avec l'opérateur ternaire "abrégé" (depuis PHP 5.3), à savoir ?:
.
Celui-ci permet juste d'omettre la partie centrale, sans vérifier l'existence de la variable.
$value = $x ?: $valueIfXIsFalse;
$value
devient $x
si $x
est considéré comme "vrai" . $value
devient $valueIfXIsFalse
si $x
est considéré comme "faux".
Contrairement au null coalescent, il reverra un warning si $x
n'est pas défini.
Spaceship
Cet opérateur permet de simplifier la comparaison entre deux variables :
$comparison = ($a < $b) ? -1 : (($a > $b) ? 1 : 0);
peut maintenant s'écrire :
$comparison = $a <=> $b;
Comme l'indique la documentation,
cet opérateur retourne donc -1
, 1
ou 0
selon la différence entre $a
et $b
.