Si jamais vous désirer en savoir plus sur Opérateur coalescent null pour Javascript c’est déjà discuter.
Null Coalescing Operator ??
est une nouvelle fonctionnalité de PHP 7. Il est généralement utilisé pour vérifier si une variable a une valeur. Il sera plus facile pour vous de comprendre si vous avez déjà utilisé l’opérateur ternaire ??
et la fonction isset(). Si la variable n’a pas de valeur, elle renvoie une valeur par défaut.
En terme simple : l’utilisation de ??
en raccourci est : !isset() || is_null()
Exemple
Habituellement, la façon dont nous exécutons le programme !
<?php $defaultNumber = 25; $userNumber; if (isset($userNumber)) { echo $userNumber; }else { echo $defaultNumber; } // Output => 25 ?>
Opérateur coalescent null (Null Coalescing Operator) peur rendre ce programme plus facile pour nous. En utilisant l’opérateur de fusion des nuls, nous pouvons facilement écrire moins de code et exécuter le programme en moins de temps.
<?php $defaultNumber = 25; // Null Values and value is not set $userNumber; echo $userNumber ?? $defaultNumber; // Output => 25 ?>
Si la valeur est donnée, la fonction sera comme ceci
<?php $defaultNumber = 25; $userNumber = 30; echo $userNumber ?? $defaultNumber; // Output => 30 ?>
Il vérifie donc la valeur, si la valeur est définie, il l’affiche et sinon, il affiche la valeur par défaut.
On peut également faire un chaînage avec l’opérateur ??
(Chaining ??
operation)
<?php $defaultNumber = 25; $browserNumber; $userNumber; echo $userNumber ?? $browserNumber ?? $defaultNumber; // Output => 25 ?>
<?php $defaultNumber = 25; $browserNumber = 20; $userNumber; echo $userNumber ?? $browserNumber ?? $defaultNumber; // Output => 20 ?>
Petite note que j’aime bien dire dans mes commentaires de Merge Request (Pull Request). Lorsque vous utilisez l’opérateur de coalescence sur la concaténation de chaînes de caractères, n’oubliez pas d’utiliser les parenthèses ().
<?php $firstName = "John"; $lastName = "Doe"; echo $firstName ?? "Unknown" . " " . $lastName ?? ""; ?>
Cela ne produira que John
, et si son $firstName
est null
et son $lastName
est Doe
, cela produira Unknown Doe
. Pour obtenir le nom de John Doe
, nous devons utiliser des parenthèses comme ceci.
<?php $firstName = "John"; $lastName = "Doe"; echo ($firstName ?? "Unknown") . " " . ($lastName ?? ""); ?>
Cela produira John Doe
au lieu de John
seulement.
Ou une version avec un chaînage
<?php $firstName = $_GET['firstname'] ?? $_POST['firstname'] ?? 'Unknown'; $lastName = $_GET['lastname'] ?? $_POST['lastname'] ?? ''; echo trim("{$firstName} {$lastName}"); ?>
L’opérateur ternaire ?:
?:
est comme une porte qui laisse passer tout ce qui est faux – y compris NULL- Tout ce qui est faux :
0
,chaîne vide (empty string)
,NULL
,false
,!isset()
,empty()
- Comme l’ancien opérateur ternaire :
X ? Y : Z
- Note
:?
: lancera un AVIS PHP sur les variables indéfinies (unset
ou!isset()
).
Utilisation de ?:
- vérification de empty(), !isset(), is_null() etc
- raccourcir l’opération ternaire comme
!empty($x) ? $x : $y
à$x ?: $y
- raccourcir
if(!$x) { echo $x; } else { echo $y; }
àecho $x ?: $y
Exemple simple
<?php echo 0 ?: 1 ?: 2 ?: 3; //1 echo 1 ?: 0 ?: 3 ?: 2; //1 echo 2 ?: 1 ?: 0 ?: 3; //2 echo 3 ?: 2 ?: 1 ?: 0; //3 echo 0 ?: 1 ?: 2 ?: 3; //1 echo 0 ?: 0 ?: 2 ?: 3; //2 echo 0 ?: 0 ?: 0 ?: 3; //3 ?>
Voici un exemple plus concret avec les différents types de données
<?php var_export (false ?? 'value2'); // false var_export (true ?? 'value2'); // true var_export (null ?? 'value2'); // value2 var_export ('' ?? 'value2'); // "" var_export (0 ?? 'value2'); // 0 var_export (false ?: 'value2'); // value2 var_export (true ?: 'value2'); // true var_export (null ?: 'value2'); // value2 var_export ('' ?: 'value2'); // value2 var_export (0 ?: 'value2'); // value2 ?>
Conclusion
Voilà, amusez-vous avec les opérateurs de PHP et essayés de simplifier vos écritures!