Novedades PHP 8.4

PHP 8.4
Solucionex
26
Dic 24

El 21 de Noviembre de 2024 salió la versión 8.4.1 de PHP y contiene muchísimas características nuevas: Nuevas clases, interfaces, funciones, etc.

A continuación se repasarán las nuevas novedades en esta importante actualización.

Encadenamiento de expresiones sin paréntesis

Ahora es posible encadenar métodos sin necesidad de encapsular las expresiones en paréntesis.

En PHP 8.3 teníamos que hacerlo tal que así: 

(new funcion())->getFuncion()

Ahora en PHP 8.4 podemos eliminar los paréntesis que encapsulan la primera función:

new funcion()->getFuncion()

Nuevas funciones array

Se han añadido nuevas funciones array:

  • array_find: Retorna el primer elemento que coincida con la función callback.
  • array_find_key: Retorna la key del primer elemento que coincida con la función callback. En caso de no encontrar nada devuelve null.
  • array_any: Comprueba si al menos uno de los elementos coincide con la función callback.
  • array_all: Comprueba si todos los elementos coincide con la función callback.

API de objetos BCMath

Permite usar la API de objetos BCMath, una API que nos permite el uso orientado a objetos y operadores matemáticos estándar cuando se trabaja con números.

Subclases específicas del driver PDO

Las nuevas subclases Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql y Pdo\Sqlite de PDO ahora están disponibles. Más información: https://www.php.net/releases/8.4/en.php#pdo_driver_specific_subclasses

Nuevas características para el DOM y soporte para HTML5

Incluye soporte respecto a los documentos HTML5, corrige varios errores de cumplimiento antiguos en el comportamiento de la funcionalidad DOM, y añade varias funciones para hacer más conveniente trabajar con documentos, como por ejemplo, HTMLDocument o XMLDocument.

$dom = Dom\HTMLDocument::createFromString(
    <<<'HTML'
        <main>
            <article>PHP 8.4 is a feature-rich release!</article>
            <article class="featured">PHP 8.4 adds new DOM classes that are spec-compliant, keeping the old ones for compatibility.</article>
        </main>
        HTML,
    LIBXML_NOERROR,
);

$node = $dom->querySelector('main > article:last-child');
var_dump($node->classList->contains("featured")); // bool(true)

https://www.php.net/releases/8.4/es.php

Más información: https://www.php.net/manual/es/migration84.new-features.php#migration84.new-features.dom

Atributo #[\Deprecated]

Se puede usar el atributo deprecated para hacer que el mecanismo de obsolescencia de PHP esté disponible para funciones, métodos y constantes de clase definidas por el usuario.

Hooks para propiedades

Nos permite asignar métodos get set a las propiedades, así creando properties hooks.

<?php

class Person {
	string $name;
	string $lastname;
	string fullname {
		get => $this->name . $this->lastname;
		set(string value) => [$this->name, $this->lastname] = explode(value, ' ');
	}
	
	public function __construct(string $fullname){
		$this->fullname = $fullname;
	}
}

Visibilidad asimétrica para las propiedades

Ahora PHP permite asignar el alcance de la propiedad de manera independiente, lo que reduce repetitidad a la hora de declarar métodos getter. Esto impide la modificación de la propiedad desde fuera de la clase.

public private(set) string $name = 'Rafa';

En el siguiente enlace se puede visualizar más ejemplos y explicaciones: https://www.php.net/releases/8.4/es.php

php
Drupal
Desarrollo