Null Coalescing vs opérateur Elvis en PHP

Subodh Poudel 30 janvier 2023
  1. Opérateur Elvis en PHP
  2. Opérateur de coalescence nulle en PHP
Null Coalescing vs opérateur Elvis en PHP

Cet article différenciera l’opérateur de coalescence nulle et l’opérateur Elvis en PHP avec des démonstrations.

Opérateur Elvis en PHP

Tout d’abord, parlons de l’opérateur Elvis. L’opérateur PHP Elvis est un raccourci pour l’opérateur ternaire.

On peut aussi dire que c’est une forme modifiée de l’opérateur ternaire. Pour comprendre l’opérateur PHP Elvis, nous devons connaître l’opérateur ternaire et son fonctionnement.

Un opérateur ternaire est un opérateur conditionnel utilisé pour effectuer une simple comparaison ou vérification d’une condition comportant des instructions simples. C’est une version plus courte de l’instruction if-else.

Il diminue la longueur du code effectuant des opérations conditionnelles. L’ordre des opérations est de gauche à droite.

Syntaxe:

condition? statement1 : statement2;

Dans l’opérateur ternaire, premièrement, la condition est évaluée. Si la condition est vraie, statement1 est exécutée, et si la condition est fausse, statement2 est exécutée.

On l’appelle un opérateur ternaire car il prend trois opérandes, c’est-à-dire une condition, une déclaration de résultat pour vrai et une déclaration pour faux.

Exemple de code :

<?php
$marks = 80;
$result = $marks >= 40 ? 'Pass': 'Fail';
echo $result;
?>

L’exemple ci-dessus affichera Pass car la condition $marks >= 40 est vraie.

Production:

Pass

Voyons maintenant l’opérateur Elvis. Il est légèrement différent de l’opérateur ternaire ; il laisse simplement de côté le deuxième opérande (entre condition et statement2) et le rend encore plus court.

Syntaxe:

condition?:statement;

Ici, si la condition est évaluée à vrai, elle renvoie condition. Sinon, il renverra statement.

La représentation ternaire de la syntaxe Elvis ci-dessus est illustrée ci-dessous.

conditon ? condition : statement;

Remarque : Les valeurs telles que 0, false, NULL, "", [], "0", etc., sont considérées comme des valeurs fausses en PHP.

Voyons quelques exemples d’opérateurs Elvis.

Exemple de code :

<?php
$name = "John Doe";
$yourName = $name ?: 'No name';
echo $yourName."<br>";

$marks = "";
$yourMarks = $marks ?: 'No marks';
echo $yourMarks."<br>";

$address = null;
$yourAddress = $address ?: 'No Address';
echo $yourAddress."<br>";

$age = false;
$yourAge = $age ?: 'No age';
echo $yourAge."<br>";
?>

Production:

John Doe
No marks
No Address
No age

Puisque la variable $name renvoie true, la valeur de la variable est évaluée. Dans le reste des cas, les variables $marks, $address et $age renvoient false, donc les opérandes de droite sont évalués.

Ainsi, nous pouvons conclure que la sortie de l’opérateur Elvis dépend de l’état true ou false de la condition.

Opérateur de coalescence nulle en PHP

L’opérateur de coalescence nul vérifie si la variable donnée est nulle ou non, et il renvoie la valeur non nulle de la paire de valeurs. La sortie de l’opérateur de coalescence nulle dépend de la valeur nulle de la variable.

Voyons la syntaxe ci-dessous pour le comprendre.

statment1 ?? statement2;

Ici, si statment1 est évalué comme étant nul, statment2 sera retourné. Si statment1 est une valeur non nulle, elle sera retournée.

Dans l’opérateur de coalescence nulle, peu importe si la valeur de statement est false, 0, ou ''. Même si statement a des valeurs fausses, sa valeur sera retournée.

C’est la principale différence entre l’opérateur Elvis et l’opérateur de coalescence nulle. Voici quelques exemples d’opérateurs de coalescence nuls :

Exemple de code :

<?php
$name = "John Doe";
$yourName = $name ?? 'No name';
echo $yourName."<br>";

$marks = "";
$yourMarks = $marks ?? 'No marks';
echo $yourMarks."<br>";

$age = false;
$yourAge = $age ?? 'No age';
echo $yourAge."<br>";

$address = null;
$yourAddress = $address ?? 'No Address';
echo $yourAddress."<br>";
?>

Production:

John Doe


No Address

Ici, la variable $name est vraie, puis elle est évaluée et imprimée dans la section de sortie. Ensuite, la variable $marks est une chaîne vide ; une chaîne vide est une valeur fausse.

Le deuxième opérande n’est pas évalué puisqu’il ne s’agit pas d’une valeur nulle. Il y a un blanc dans la section de sortie car la chaîne vide est évaluée.

Le cas est le même pour la variable $age car elle contient une valeur fausse mais pas une valeur nulle. Enfin, la variable $address a une valeur nulle ; par conséquent, le deuxième opérande, No Address, est évalué.

À partir des exemples et des explications ci-dessus, nous pouvons conclure que la différence significative entre l’opérateur Elvis et l’opérateur de coalescence nul est que l’opérateur Elvis vérifie si la valeur est vraie. Pourtant, l’opérateur de coalescence nul vérifie si la valeur n’est pas nulle.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Article connexe - PHP Operator