close

L'opérateur ternaire et l'opérateur de fusion NULL en PHP

#1 Opérateur ternaire ?: open

L'opérateur ternaire ?: permet dans des situations précises d'écrire du code de manière très condensé 😀. Il est construit au moyen de trois opérandes d'où son nom. Le premier opérande est évalué comme un booléen, ça peut être une condition, ça peut être une expression. Si ce booléen est true c'est la première valeur (* après le ?) qui est retournée, sinon c'est la deuxième (* après le :).

Ci-dessous, j'affecte la valeur retournée par l'opérateur ternaire à la variable $x.

A quoi ça sert ? 😀 L'utilisation la plus fréquente, on la trouve lorsque l'on transmet une information à un script PHP. Cette information peut être passée par l'URL, et dans ce cas, elle est disponible dans la superglobale $_GET. L'opérateur ternaire va servir à mettre une valeur par défaut si justement cette information n'a pas été passée.

Ci-dessous, j'utilise la fonction isset() pour savoir si l'information identifiant est présente dans l'URL.

  • Si l'information est présente (* http://localhost:3000?identifiant=Dupont), alors isset($_GET['identifiant']) retourne true et le ternaire retourne la valeur qu'il y a dans $_GET['identifiant'] soit Dupont.
  • Si l'information n'est pas présente (* http://localhost:3000), alors isset($_GET['identifiant']) retourne false et le ternaire retourne la valeur 'Aucun'.

Pour tester ce script, j'ai besoin d'un serveur. Pour cela, je lance le serveur interne à PHP en tapant la commande php -S localhost:3000. Puis je prends un navigateur et je tape une URL. Je n'ai pas besoin de mettre le nom du script dans l'URL puisque le fichier s'appelle index.php.

#2 Opérateur de fusion NULL ?? open

L'opérateur de fusion NULL ?? s'appelle aussi l'opérateur de coalescence NULL. Grosso modo, coalescence veut dire fusion. (* C'est une expression utilisée pour la fusion d'éléments ou la fusion de substances).

L'opérateur va renvoyer la première valeur qui ne vaut pas NULL. L'avantage ici, c'est que l'on peut le chaîner facilement. Ci-dessous, je chaîne $nom, $prenom et $surnom. $prenom n'étant pas NULL c'est sa valeur qui est retournée et affectée à $identifiant.

Je peux facilement remplacer l'opérateur ternaire de l'exemple précédent par un opérateur de coalescence NULL. C'est encore plus concis 😎.