PHP 7.0 introduced the Null Coalescing Operator ( ?? ), which provides a convenient, more concise alternative to isset() or an explicit NULL check when retrieving the values of variables, properties and object members. Specifically, it provides the short syntax $foo ?? $bar which returns $foo if it exists and is not NULL , or otherwise $bar . This is useful when, for example, retrieving data from query parameters or a configuration file.

One use of the ?? operator is not to retrieve a value per se, but to check its value without worrying about whether it exists, for instance $_GET["action"] ?? NULL === "submit" lets you check if there is a query parameter named action that is set to submit , which is considerably shorter and less redundant than typing out isset($_GET["action"]) && $_GET["action"] === "submit" .

It is this latter use-case that this RFC concerns. While ?? NULL is significantly better than the full expression using isset() , it is still redundant, since we have to provide some arbitrary default value. A shorter alternative would be to use the error-suppression operator ( @ ), but it is slow and considered bad practice.