Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the woocommerce domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/admin/domains/adue.digital/public_html/wp-includes/functions.php on line 6114

Notice: La función _load_textdomain_just_in_time fue llamada de forma incorrecta. Translation loading for the astra domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Visitá Depuración en WordPress para más información. (Este mensaje se agregó en la versión 6.7.0.) in /home/admin/domains/adue.digital/public_html/wp-includes/functions.php on line 6114
¡La expresión match() viene con PHP 8! – Adue

¡La expresión match() viene con PHP 8!

El Match Expression v2 RFC ya ha sido aceptado y pasará a formar parte de la versión estable de PHP 8, la cual, como ya sabemos, será lanzada terminando el corriente año.

Por lo pronto ofrecerá una sintaxis limpia de una sola línea que permite de forma fácil relacionar expresiones coincidentes, pero el mismo RFC deja las puertas abiertas para futuras mejoras y funcionalidades.

¿De qué se trata este nuevo RFC?

Como expresión, permite capturar un valor mediante una asignación o retornarlo sin necesidad de utilizar una variable local, como sucede cuando utilizamos la sentencia switch

$a = 1;
$b = 2;
$resultado = 0;
// Antes
switch ($operacion) {
    case 'resta':
        $resultado = $a - $b;
        break;
    case 'multiplicacion':
        $resultado = $a * $b;
        break;
    
    case 'division':
        $resultado = $a / $b;
        break;
    default:
        $resultado = $a + $b;
        break;
}
// Después
$resultado = match ($operacion) {
    'resta' => $a - $b;
    'multiplicacion' => $a * $b;
    'division' => $a / $b;
    default => $a + $b;
};

De esta manera no sólo se simplifica el código, sino que también se evitan errores comunes que suelen ocurrir con el uso de la sentencia switch (como olvidar poner break; al final de la resolución de una determinada condición).

En el caso de que la condición no coincida con ninguna expresión declarada, y no exista una resolución por defecto, se lanzará una excepción UnhandledMatchError, evitando errores producidos por olvidarnos alguna de las condiciones.

match también permite el uso de múltiples condiciones para una misma resolución:

echo match ($x) {
    1, 2 => 'Lo mismo para 1 y 2',
    3, 4 => 'Lo mismo para 3 y 4',
};

¿Qué se espera para el futuro?

Alguna de las funcionalidades futuras que plantea el RFC son la posibilidad de tratar a la sentencia match como bloque y no como expresión, el uso de expresiones regulares como condición y permitir obviar el valor true como condición.

Esta nueva característica junto con otras prometedoras formarán parte de la nueva versión de PHP y desde Adue estamos ansiosos y atentos para comenzar a implementarlas en nuestros trabajos. Igual, si no podés aguantarte, la versión Alpha ya está disponible para pruebas locales ;), ¡eso sí! todavía no la uses en producción, hay que tener un poquito de paciencia hasta que salga la primera RC.

#LoHacemosAdue

es_ARSpanish