Reducir lineas de codigo en php cambiando sentencia if..else por operador ternario

Cuando se trata de una pagina o aplicación web todos sabemos que cualquier byte que nos podamos ahorrar siempre será bienvenido. Reducir el peso de nuestros ficheros es algo extremadamente útil a la hora de optimizar los tiempos de carga de nuestra web.

Optimizar nuestro código haciendo que trabaje de la misma manera reduciendo el número de lineas es una de esas técnicas que nos será muy útiles en este cometido. De la misma manera que existe el shorthand css o frameworks javascript para simplificar nuestro codigo (como jquery o mootools), en php podemos usar el operador ternario (?) para abreviar nuestro código y reducir así la cantidad de lineas finales y por tanto el peso del fichero.

Una parte importante de nuestro codigo php (y otros lenguajes de programación) es la evaluación de condiciones if/else para determinar el valor de una variable, o un texto a mostrar, etc.. Con el operador ternario podremos acortar estas condiciones a evaluar y por tanto nuestro código.

¿Como funciona el operador ternario?

El formato de una expresión con el operador ternario es el siguiente :

condicion ? resultado-si-verdadero : resultado-si-falso

Con este sencillo ejemplo ilustraré el uso del operador ternario y la traducción de una evaluación sencilla con esta técnica. Supongamos una condición como la del siguiente código:

if ($nota >= 5)
{
$curso = 'Aprobado';
}
else
{
$curso = 'Suspendido';
}

En este ejemplo estamos asignando el valor 'Aprobado' a la variable $curso cuando el valor de la variable $nota es mayor o igual que 5. Para cualquier otro caso el valor de $curso es 'Suspendido'. Vamos a ver este mismo ejemplo con un operador ternario :

$curso = ($nota >= 5) ? 'Aprobado' : 'Suspendido';

Como se puede comprobar, hemos reducido considerablemente el numero de lineas para obtener el mismo resultado. Teniendo en cuenta la cantidad de condiciones if/else que puede llegar a haber en nuestro código, el ahorro de lineas puede ser importante. Por otra parte, se simplifica y mejora la calidad del codigo resultante.

Anidando condiciones con operador ternario

En algunos casos se pueden anidar condiciones para valorar condiciones dentro de otras. Se recomienda no abusar de ésta técnica puesto que puede hacer que nuestro codigo sea dificil de mantener por terceras personas e incluso nosotros mismos pasado un tiempo desde la creación del mismo.

En el siguiente ejemplo validamos si nos llega el valor por post, de no ser así revisamos si nos llega por get, para asignarlo a la variable $info. Si no llega por ninguna de las vias se asigna un valor vacio a la variable:

$info = (isset($_POST['info']) ? $_POST['info'] : (isset($_GET['info']) ? $_GET['info'] : '') ); 

Otros ejemplos y utilidades

Esta técnica puede ser muy útil en la asignación de variables, verificacion de condiciones e impresión de datos por pantalla mediante la función echo de php. En los siguientes ejemplos podreis ver la técnica aplicada a distintas situaciones.

Mostrando un mensaje de Bienvenida segun si el usuario esta identificado o no:

echo 'Bienvenid@ '.($user['identificado'] ? $user['nombre'] : 'Invitado');

Mensaje condicionado segun el valor de la variable genero (para chico o chica):

echo 'Bienvenid'.($user['genero'] == 'H' ? 'o' : 'a).' $user['nombre']';

Distinguir la ruta de la web segun si ssl está activo o no

echo "http'.($ssl_activo ? 's' : '').'://www.dominio.com";

Redireccionar por cabecera segun el valor de una variable

header('Location: '.($user['identificado'] ? '/usuarios/index.php' : 'login.php?error=1'));

Como se puede observar las posibilidades son muchas con esta técnica una vez se ha asimilado su uso. Recomiendo escribir primero la sentencia con if/else y luego reducirla con el uso del operador ternario si no se tiene asimilada la técnica, os será muy útil las primeras veces para acabar de cogerle el truco.

No hay comentarios:

Publicar un comentario