La RFC Null Coalesce Operator proposait d’introduire un nouvel opérateur ?? qui renverrait le résultat de sa première opérande s’il existe et est différent de NULL (en comparaison stricte), et celui de sa seconde opérande sinon.

Le constant de départ était que l’opérateur ?: introduit avec PHP 5.3 est pratique, mais pas parfait : il peut notamment entrainer des levées de notices si sa première opérande n’existe pas (ce qui force souvent à utiliser isset()).

Avec le nouvel opérateur ?? proposé par cette RFC, il deviendrait possible d’écrire quelque chose de ce type, qui ne lèverait pas de notice si $_GET['user'] n’existe pas :

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

Les échanges que nous avons eu sur la mailing-list php-internals@afup ayant montré que notre avis était plutôt positif et qu’un tel opérateur apporterait une valeur à PHP, j’ai posté en ce sens sur internals@.

La RFC correspondante à été acceptée et ce nouvel opérateur ?? devrait arriver avec PHP 7 !

Notons que l’ajout d’un opérateur d’affectation ??= n’a pour l’instant pas été jugé utile. Il pourra, bien sûr, être ajouté dans le futur, s’il s’avère qu’il est nécessaire.