Este operador de PHP podría cambiarlo todo - PHP RFC - Operador nullsafe

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.