Opérateur coalescent null ou Null Coalescing Operator (??)

-

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!

Alfredhttps://www.alfreddagenais.com
Je suis un développeur Web Full Stack sénior. Chaque jour est pour moi une journée de plus pour découvrir de nouvelles idées. Le développement web et l'informatique sont omniprésents dans mon quotidien. Pour que la créativité soit à son maximum, il ne faut pas avoir peur d’expérimenter et nous avons tous que le Web est infiniment grand pour expérimenter nos idées.

Buy me a coffee Paypal Patreon Ko-Fi

Share this article

Recent posts

Popular categories

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Recent comments