PHP 7 trajo muchas cosas buenas, una de ellas es el operador de fusión null o null coalesce. Este operador es representado por dos signos de interrogación. Puedes llamarlo como…
Hoy vamos a explicar su uso y funcionamiento, verás que aumentará tu productividad. Por cierto, es una característica de PHP 7 así que, ¿qué esperas para actualizarte?
Este operador viene a remplazar los if, isset y tal vez los operadores ternarios. Si conoces MySQL, te invito a leer este post explicando COALESCE, verás que es casi lo mismo 😉
Lo que hace este poderoso operador es devolver el primer valor que no sea nulo.
Pongamos el ejemplo básico de una API de usuarios. En dicha API nos mandan por medio de GET el límite de usuarios que queremos ver.
Si no mandan el límite, entonces asumimos un límite por defecto, que sería 10 (en este caso). Entonces lo haríamos así:
<?php
if(isset($_GET["limite"])){
$limite = $_GET["limite"];
}else{
$limite = 10;
}
hacerConsultaDeUsuariosConLimite($limite);
Si queremos ser un poco más elegantes, usamos el operador ternario y quedaría rescrito así:
<?php
$limite = isset($_GET["limite"]) ? $_GET["limite"] : 10;
hacerConsultaDeUsuariosConLimite($limite);
Pero igual no me gusta, mejor lo hacemos así:
<?php
$limite = $_GET["limite"] ?? 10;
hacerConsultaDeUsuariosConLimite($limite);
Así se ve mucho mejor. En este momento no se nota mucho la diferencia, pero sigue leyendo para que veas cuán útil es.
Siguiendo el ejemplo de arriba, ahora supongamos que modificamos nuestra API y aceptamos el límite tanto por POST así como por GET.
Normalmente quedaría así:
<?php
if(isset($_GET["limite"])){
$limite = $_GET["limite"];
}else if(isset($_POST["limite"])){
$limite = $_POST["limite"];
}else{
$limite = 10;
}
hacerConsultaDeUsuariosConLimite($limite);
Con el operador ternario, así:
<?php
$limite = isset($_GET["limite"]) ? $_GET["limite"] : isset($_POST["limite"]) ? $_POST["limite"] : 10;
hacerConsultaDeUsuariosConLimite($limite);
Finalmente, con este nuevo operador queda de la siguiente manera:
<?php
$limite = $_GET["limite"] ?? $_POST["limite"] ?? 10;
hacerConsultaDeUsuariosConLimite($limite);
Primero evalúa si hay algo en GET, luego en POST y finalmente, si ambos valores son nulos, se obtiene 10.
Se puede evaluar una lista infinita de operandos. Aquí un ejemplo:
<?php
$limite = null ?? null ?? null ?? 10 ?? 20 ?? 30;
En este caso, límite es 10, ya que es el primer valor que no es nulo y ahí deja de evaluar:
<?php
function hola(){
return "Hola mundo";
}
function adios(){
return null;
}
$saludo = adios() ?? hola();
En este caso, saludo es “Hola mundo”:
Así como podemos llamar a funciones creadas por nosotros, podemos llamar a funciones nativas de PHP y claramente pasar argumentos.
Terminemos dando un ejemplo siguiendo nuestra API de usuarios en donde pueden mandar el límite por GET o POST.
Tendremos una función que devolverá los usuarios, pero que también puede devolver null
. Y si devuelve null
, devolvemos un arreglo vacío. Juntando todo…
<?php
hacerConsultaDeUsuariosConLimite($_GET["limite"] ?? $_POST["limite"] ?? 10) ?? [];
Llamamos a la función ya sea con lo que haya en GET, POST o con el número 10. Y si nos devuelve null
, entonces devolvemos []
; es decir, un arreglo vacío.
Básicamente este operador simplifica el uso de isset y el encadenamiento largo con el operador ternario.
Devuelve el primer argumento que no sea nulo, y podemos evaluar una lista infinita de operandos.
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.