2015-11-12 1 views
-3

Avec la sortie d'une nouvelle version de PHP, PHP 7, de nouvelles fonctionnalités sont introduites. parmi ces nouvelles fonctionnalités, il y a un opérateur que je ne connais pas. Le Null coalesce operator.À quoi sert l'opérateur 'Null coalesce' (??)?

Quel est cet opérateur et quels sont les cas d'utilisation?

+5

Depuis le [manuel] (http://php.net/manual/fr/migration70.new-features.php#migration70.new-features.null-coalesce-op): « * Le L'opérateur coalesce null (??) a été ajouté comme sucre syntaxique pour le cas courant d'avoir besoin d'un ternaire en conjonction avec isset() .Il retourne son premier opérande s'il existe et n'est pas NULL, sinon il retourne son deuxième opérande. * " – D4V1D

Répondre

4

Vous pouvez l'utiliser pour initialiser une variable qui pourrait être nulle

Le ?? L'opérateur est appelé l'opérateur de coalescence nulle. Elle renvoie l'opérande gauche si l'opérande n'est pas nul; sinon, il renvoie l'opérande de droite .

Source: https://msdn.microsoft.com/nl-nl/library/ms173224.aspx

(ne dépend pas de la langue)

Cas d'utilisation

Vous pouvez écrire

$rabbits; 

$rabbits = count($somearray); 

if ($rabbits == null) { 
    $rabbits = 0; 
} 

Vous pouvez utiliser la notation plus courte

$rabbits = $rabbits ?? 0; 
0
$username = $_GET['user'] ?? 'nobody'; 

est identique à

$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';

?? est un raccourci ternaire

1

Selon le Manuel PHP:

L'opérateur coalesce null (??) a été ajouté comme sucre syntaxique pour le cas commun d'avoir besoin d'utiliser un ternaire conjointement avec isset(). Il retourne son premier opérande s'il existe et n'est pas NULL; sinon il renvoie son deuxième opérande.

// Fetches the value of $_GET['user'] and returns 'nobody' 
// if it does not exist. 
$username = $_GET['user'] ?? 'nobody'; 
// This is equivalent to: 
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; 

// Coalesces can be chained: this will return the first 
// defined value out of $_GET['user'], $_POST['user'], and 
// 'nobody'. 
$username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';