Hoy, navegando por los RFC de las próximas versiones de PHP me he encontrado con una idea muy interesante, fundamental, diría yo.

Un RFC (Request For Comments) de PHP es una idea pública para incorporar como funcionalidad en lenguaje. Empieza en un estado de votación, a en discusión, borrador y aceptado. Después, solo si pasa todas estas fases, pasa a formar parte de una release de PHP.

Ahora mismo, cualquier librería, framework o fragmento de código de PHP es habitual encontrarse con algo parecido a esto:

$country =  null;
 
if ($session !== null) {
    $user = $session->user;
 
    if ($user !== null) {
        $address = $user->getAddress();
 
        if ($address !== null) {
            $country = $address->country;
        }
    }
}

// do something fancy with $country

Se puede hacer de una forma más elegante usando el operador ?? o concatenando varios if ternarios -esto, en ocasiones queda hasta peor-, pero el caso es que nos vemos obligados a comprobar continuamente si una variable esta asignada antes de acceder a una de sus propiedades.

El operador nullsafe

Este operador resumiría todo el código anterior en algo así:

$country = $session?->user?->getAddress()?->country;

Este operador podemos anidarlo uno tras otro, desde que la primera variable o propiedad tenga un valor null el resto de la expresión es ignorada y se asigna null a $country.

El único caso en el que $country tendrá un valor distinto a null es cuando todas las llamadas del fragmento de código anterior tengan un valor accesible.

Este RFC aún está en un estado de discusión muy temprano y no podemos asegurar ni con que versión ni, ni siquiera, que realmente vaya a incorporarse.