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 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