La gestion des valeurs nulles en PHP

La gestion des valeurs nulles en PHP

Null est un type de données spécial en PHP qui représente une variable sans valeur.

Dans cet article, nous passerons en revue toutes les façons dont vous pouvez gérer les valeurs nulles en PHP

La fonction is_null()

La fonction is_null() est utilisée pour vérifier si une variable est nulle ou non. Il renvoie true si la variable est nulle et false sinon.

$foo = null;

if (is_null($foo)) {

echo '$foo is null';

}

// $foo is null

La fonction is_null() ne peut pas vérifier si une variable est définie ou non. Vous devez donc utiliser la fonction isset() pour vérifier si une variable est définie ou non avant d'utiliser la fonction is_null().

L'opérateur de coalescence nulle

L'opérateur de fusion null ( ??) est utilisé pour vérifier si une variable est nulle ou non. Il renvoie la valeur de la variable si elle n'est pas nulle et renvoie la valeur du deuxième opérande si la variable est nulle.

L'opérateur a été introduit dans PHP 7.0.

$foo = null;

echo $foo ?? 'bar';

// bar

Vous pouvez également chaîner l'opérateur de fusion null pour vérifier plusieurs variables.

$foo = null;

echo $foo ?? $bar ?? 'baz';

// baz

Le seul problème ici est que l'opérateur de fusion nul renverra la valeur du deuxième opérande même si la variable n'est pas définie.

echo $bar ?? 'foo';

// foo

L'opérateur d'affectation de fusion nulle

L'opérateur d'affectation de fusion nulle ( ??=) est utilisé pour attribuer une valeur à une variable si elle est nulle. Il attribue la valeur de l'opérande de droite à l'opérande de gauche si l'opérande de gauche est nul.

$foo = null;

$foo ??= 'bar';

echo $foo;

// bar

L'opérateur nullsafe

L'opérateur nullsafe ( ?->) est utilisé pour appeler en toute sécurité une méthode/propriété sur une variable si elle n'est pas nulle. Il renvoie la valeur de la méthode si la variable n'est pas nulle et renvoie null sinon.

L'opérateur est réintroduit dans PHP 8.0 .

class User

{

public function getName()

{

return 'John Doe';

}

}

$user = null;

echo $user?->getName();

// null

$user = new User;

echo $user?->getName();

// John Doe

L'opérateur ternaire

Vous pouvez toujours utiliser le bon vieil opérateur ternaire pour vérifier si une variable est nulle ou non. Mais il n'est pas recommandé de l'utiliser car il est verbeux et moins lisible que l'opérateur de fusion nulle.

$foo = null;

echo $foo ? $foo : 'bar';

// bar

Types nullables

Parfois, vous souhaiterez peut-être déclarer explicitement un paramètre de fonction ou un type de retour comme étant nullable. Vous pouvez le faire en utilisant l' ? avant la déclaration de type.

function foo(?string $bar): ?string

{

return $bar;

}

echo foo(null);

// null

echo foo('bar');

// bar

De cette façon, vous pouvez indiquer explicitement à la fonction que le paramètre $bar peut être nul et que la fonction peut également renvoyer null.

Les types nullables existent depuis PHP 7.1 .

Null en tant que type autonome

À partir de PHP 8.2 , vous pouvez l'utiliser null comme type autonome.

Cela signifie que vous pouvez déclarer une variable comme étant de type null et qu'elle ne l'acceptera que null comme valeur.

De même, vous pouvez également définir le type de retour d'une fonction null et elle ne sera renvoyée null que sous forme de valeur.

class Nulle

{

public null $nil = null;

public function isNull(null $nil): null

{

return null;

}

}

$nil = new Nulle;

$nil->isNull(null);

// returns null

$nil->isNull('foo');

// PHP Fatal error: Uncaught TypeError: Nulle::isNull():

// Argument #1 ($nil) must be of type null, string given

Une chose à garder à l'esprit lors de l'utilisation de la méthode d'indication de type et des variables null est que si vous essayez de marquer null comme nullable ( ?null), cela entraînera une erreur de compilation qui est conforme aux règles d

e redondance de résolution de type actuelles de PHP.

Vous aimez cet article ? Pensez à laisser un

un commentaire et de partager.

Did you find this article valuable?

Support Jocelin Kisenga by becoming a sponsor. Any amount is appreciated!