PHP 8.4 Sigue Muy Vivo: Te Cuento Todas Las Novedades

Llego el día, y PHP 8.4 ya está entre nosotros. Lejos de deprecarse y caer en el olvido, PHP sigue modernizando y mejorando sus funcionalidades año tras año. Con está última versión llegan mejoras que harán que nuestro código sea más elegante, eficiente y poderoso. Como programadores, siempre buscamos formas de escribir código más limpio y funcional, y esta versión nos trae herramientas perfectas para ello.

Desde la introducción de nuevas funciones para arrays hasta visibilidad asimétrica en propiedades, PHP 8.4 promete simplificar nuestras vidas. Vamos a desglosar estas novedades con ejemplos detallados para que no te pierdas nada.


1. Hooks de Propiedad: ¿Getters y Setters? Ya No los Necesitas

PHP 8.4 introduce los property hooks, que te permiten personalizar cómo se accede o modifica una propiedad directamente desde su definición. Esto elimina la necesidad de crear métodos get y set manualmente.

Ejemplo práctico:

class Usuario {
    private string $nombre;
    private string $apellido;

    public function __construct(string $nombre, string $apellido) {
        $this->nombre = $nombre;
        $this->apellido = $apellido;
    }

    public string $nombreCompleto {
        get => $this->nombre . ' ' . $this->apellido;
        set {
            [$this->nombre, $this->apellido] = explode(' ', $value, 2);
        }
    }
}

$usuario = new Usuario('Juan', 'Pérez');
echo $usuario->nombreCompleto; // Juan Pérez
$usuario->nombreCompleto = 'Luis Gómez';
echo $usuario->nombreCompleto; // Luis Gómez

¿Qué logramos? Código más limpio y directo para manejar datos compuestos sin métodos adicionales.


2. Visibilidad Asimétrica: Controla Quién Ve y Quién Cambia

Otra característica de las que me parecen más interesantes, es la visibilidad asimétrica. Con la visibilidad asimétrica, puedes hacer que una propiedad sea pública para lectura pero privada o protegida para escritura. Esto te permite tener un control más granular de tus datos.

Ejemplo práctico:

class Producto {
    public private(set) float $precio;

    public function __construct(float $precio) {
        $this->precio = $precio;
    }
}

$producto = new Producto(29.99);
echo $producto->precio; // 29.99
$producto->precio = 35.99; // Error: No puedes modificar esta propiedad desde fuera.

Esto es perfecto para escenarios donde necesitas garantizar la inmutabilidad de ciertos valores clave.


3. Nuevas Funciones para Arrays: Más Poder, Menos Código

Trabajar con arrays ahora es más fácil gracias a funciones como array_find_key(), array_any() y array_all(). Estas simplifican tareas comunes como encontrar claves o verificar condiciones en arrays.

Función array_find

Está función parece mentira que no existiera ya, pero así es. La función array_find devuelve el valor del primer elemento del array para el cual el callback devuelve true. Si ninguno de los elementos cumple con la condición, devuelve null.

$numeros = [1, 2, 3, 4, 5];

$primerPar = array_find($numeros, fn($n) => $n % 2 === 0); // Devuelve 2
Función array_find_key

Parecida a la función array_find. Lo único que si cumple una condición, devolverá la key o clave del primer valor encontrado.

$animales = [
    'a' => 'perro',
    'b' => 'gato',
    'c' => 'vaca',
    'd' => 'pato',
    'e' => 'ganso',
    'f' => 'elefante'
];

$clave = array_find_key($animales, fn($valor) => strlen($valor) > 4);
echo $clave; // 'a'
Función array_any

Verifica si al menos un elemento cumple con una condición dada.

$numeros = [1, 3, 5, 7, 9];
$hayPar = array_any($numeros, fn($valor) => $valor % 2 === 0);
var_dump($hayPar); // false
Función array_all()

Comprueba si todos los elementos cumplen una condición.

$edades = [25, 30, 35, 40];
$sonMayores = array_all($edades, fn($valor) => $valor > 18);
var_dump($sonMayores); // true

Estas funciones no solo son útiles, sino que hacen que nuestro código sea más expresivo y fácil de leer.


4. Instanciación de Clases sin Paréntesis

Esta mejora puede parecer menor, pero es una gran aliada para mantener el código limpio y legible. Ahora puedes encadenar métodos directamente al instanciar una clase, sin necesidad de envolverla en paréntesis.

Ejemplo práctico:

$usuario = new Usuario('Juan', 'Pérez')->actualizarNombre('Luis');

Adiós a líneas adicionales y paréntesis innecesarios.


5. Mejoras en el Parser DOM y Recorte Multibyte

Aunque HTML 5 existe desde hace más de 16 años, PHP nunca tuvo el soporte adecuado para él. PHP sí tiene \DOMDocument, que en teoría debería ser compatible con HTML 4, pero ya no es realmente compatible con HTML 4. PHP lo que ha publicado es agregar un analizador compatible con HTML5 y que siga siendo compatible con versiones anteriores.

Para quienes trabajan con HTML5, el parser DOM ahora es totalmente compatible, lo que simplifica la manipulación de documentos HTML modernos.

// Compatible con HTML 5 
$dom = \Dom\HTMLDocument :: createFromString ( $html ); 

// Compatibilidad con HTML 4-ish 
$oldDom = new  \DOMDocument (); 
$oldDom -> loadHTML ( $html );
public static function createEmpty(string $encoding = "UTF-8"): HTMLDocument;
public static function createFromFile(string $path, int $options = 0, ?string $override_encoding = null): HTMLDocument;
public static function createFromString(string $source, int $options = 0, ?string $override_encoding = null): HTMLDocument;
       

Además, también incluye las funciones de recorte multibyte como mb_trim() aseguran que las cadenas sean procesadas correctamente, incluso en idiomas complejos.

Ejemplo práctico:

$cadena = "  ejemplo  ";
$cadenaRecortada = mb_trim($cadena); // "ejemplo"

Un pequeño detalle que marca la diferencia al trabajar con textos.

6. Tipos implícitos que aceptan valores nulos (deprecate)

PHP tenía este comportamiento extraño donde una variable tipificada con un null valor predeterminado se convertía en nula automáticamente:

function  guardar( Book $book = null ) {}

Este comportamiento ya no se utiliza y se eliminará en PHP 9. La solución es hacer que Book los valores sean explícitamente nulos:

function guardar( ?Book $book = null ) {}

¡Actualiza tu PHP y experimenta está y otras novedades!

PHP 8.4 no solo introduce características útiles, sino que también redefine cómo podemos escribir código más intuitivo y robusto. Ya sea que estés desarrollando APIs, aplicaciones complejas o simplemente optimizando tu flujo de trabajo, estas mejoras son un paso adelante.

Enlaces


¿Te gustaría estar al día con más novedades como esta? ¡Suscríbete a nuestra newsletter y no te pierdas contenido exclusivo, trucos de programación y análisis de herramientas que transformarán tu forma de trabajar!

Suscríbete a nuestra Newsletter

Mantente al día con nuestras últimas novedades y accede a recursos gratuitos exclusivos.
* indicates required

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *