Con los avances en el desarrollo de PHP se han ido introduciendo una serie de operadores bastante útiles a la hora de reducir la cantidad de líneas de código en nuestras aplicaciones PHP, estamos hablando de los operadores "Elvis operator" (?:), "Null coalescing operator" (??), "Spaceship operator" (<=>), "Nullsafe operator" (?->) y "Execution operator" (``).
Elvis operator (?:)
Es una forma abreviada del operador ternario, esto es comprueba el primer valor si se evalúa a true devuelve el primer valor y si no devuelve el segundo, esto es
$value ?: $other
Es lo mismo que
$value ? $value : $other
Que es lo mismo que
if ($value) {
return $value;
} else {
return $other;
}
Null coalescing operator (??)
Este operador comprueba si la primera variable es nula en cuyo caso devuelve la segunda variable y en caso contrario devuelve la primera, esto es
$value ?? $other
Es lo mismo que
$value != null ? $value : $other
Que es lo mismo que
if ($value != null) {
return $value;
} else {
return $other;
}
Spaceship operator" (<=>)
El spaceship operator lo que hace es comparar dos variables y si la primera es menor que la segunda devuelve -1, si son iguales devuelve 0 y si la primera es mayor que la segunda devuelve 1, esto es
$var1 <=> $var2
Es lo mismo que
if ($var1 < $var2) {
return -1;
} elseif ($var1 > $var2) {
return 1;
} else {
return 0;
}
Este operador es bastante útil cuando tenemos que usar funciones de ordenación a las que les tenemos que pasar una función que le dice como tiene que ordenar los elementos como pueda ser usort o parecidas
Nullsafe operator (?->)
Este operador está desarrollado para simplificar la comprobación de variables nulas antes de llamar a sus métodos o propiedades, esto es
$variable?->propertyOrMethod()
Es lo mismo que
if ($variable != null) {
return $variable->propertyOrMethod();
}
Este operador puede encadenarse, gracias a que implementa un corotocircuito en el operador, esto es si hacemos esto
$variable?->getMethod1()?->getMethod2()?->getMethod3()
y la llamada a getMethod1 o a getMethod2 devuelve null no ejecutará las llamadas siguientes
Execution operator (``)
Básicamente es una forma corta de hacer una llamada a shell_exec(), esto es
$res = `comando`;
Es lo mismo que
$res = shell_exec('comando');