- Incluye property hooks, visibilidad asimétrica, una API de DOM actualizada, mejoras de rendimiento, correcciones de errores y una limpieza general
- Se incorporan property hooks que permiten propiedades computadas que los IDE y las herramientas de análisis estático pueden entender de forma nativa
- Se introduce la visibilidad asimétrica, que permite controlar de forma independiente el alcance de lectura y escritura de las propiedades.
- Nuevas funciones
- Mediante el atributo
#[\Deprecated], ahora es posible aplicar el mecanismo existente de deprecación de PHP a funciones definidas por el usuario, métodos y constantes de clase.
- La nueva API de DOM incluye soporte conforme al estándar para el análisis de documentos HTML5 y corrige varios errores antiguos de compatibilidad en la funcionalidad DOM.
- Con el objeto
BcMath\Number, ahora es posible manejar números de precisión arbitraria de forma orientada a objetos.
- Se agregan nuevas funciones de arreglos como
array_find(), array_find_key(), array_any(), array_all().
- Se agregan nuevas subclases de PDO: Pdo\Dblib, Pdo\Firebird, Pdo\MySql, Pdo\Odbc, Pdo\Pgsql, Pdo\Sqlite.
- Ahora se puede acceder a las propiedades y métodos de objetos recién instanciados sin paréntesis.
- Nuevas clases, interfaces y funciones
- Nuevos Lazy Objects e implementación de JIT basada en el IR Framework.
- Se agregan la función
request_parse_body() y las funciones bcceil(), bcdivmod(), bcfloor(), bcround().
- Se agregan métodos como
DateTime::createFromTimestamp(), DateTime::getMicrosecond(), DateTime::setMicrosecond().
- Se agregan las funciones
mb_trim(), mb_ltrim(), mb_rtrim(), mb_ucfirst(), mb_lcfirst().
- Se agregan las funciones
pcntl_getcpu(), pcntl_getcpuaffinity(), pcntl_getqos_class(), pcntl_setns(), pcntl_waitid().
- Se agregan los métodos
ReflectionClassConstant::isDeprecated(), ReflectionGenerator::isClosed(), ReflectionProperty::isDynamic().
- Se agregan las funciones
http_get_last_response_headers(), http_clear_last_response_headers(), fpow().
- Se agregan los métodos
XMLReader::fromStream(), XMLReader::fromUri(), XMLReader::fromString(), XMLWriter::toStream(), XMLWriter::toUri(), XMLWriter::toMemory().
- Se agrega la función
grapheme_str_split().
- Deprecaciones y cambios incompatibles
- Las extensiones IMAP, OCI8, PDO_OCI y pspell se eliminan del bundle y se trasladan a PECL.
- Se deprecan los tipos de parámetros implícitamente nullable.
- Se depreca el uso de _ como nombre de clase.
- Se depreca elevar 0 a una potencia negativa.
- Ahora se produce un
ValueError si se pasa un modo inválido a round().
- Las constantes de clase de las extensiones ahora tienen tipo.
- La clase GMP ahora está marcada como
final.
- Se deprecan constantes y funciones relacionadas con MYSQLI.
stream_bucket_make_writeable() y stream_bucket_new() ahora devuelven instancias de StreamBucket.
- Cambia el comportamiento de
exit().
- Se depreca la constante E_STRICT.
- Mejoras de rendimiento y sintaxis
- Mejoras de rendimiento, de sintaxis y de seguridad de tipos.
- Se recomienda actualizar a PHP 8.4.
3 comentarios
Un lenguaje que, gracias a WordPress y Laravel, al menos no va a morirse de hambre
Es un lenguaje con el que no te vas a morir de hambre aunque WordPress y Laravel se vayan al fracaso.
Comentarios de Hacker News
La razón por la que
$this->countryCodeno provoca recursión infinita está especificada en el RFC. Se siente casi mágico que el acceso a propiedades en PHP pueda tener significados distintos según el contexto.Como programador de PHP, me preocupa la dirección que está tomando PHP. Las nuevas características del lenguaje aumentan su complejidad por beneficios cuestionables.
Me alegra ver que PHP sigue prosperando. En 2021 me preocupó la salida de Nikita Popov, pero PHP sigue siendo un buen lenguaje y todavía hay muchos desarrolladores activos.
Lo que más me entusiasma son los property hooks. Es una función que extrañaba de C#.
__get()y__set(), pero eso era pesado y requería muchas anotaciones de PHPDoc.Estaba viendo la sobrecarga de accesores de arreglos y me encontré con "Property Hooks". Me sorprendió enterarme de que es una función agregada recientemente.
Estoy satisfecho con la nueva versión de PHP. Hay muchas mejoras, como mejor stack trace para closures, mejoras de rendimiento, soporte para HTML5 y lazy objects.
Tengo muchas ganas de ver los objetos de bcmath. Más que los operadores aritméticos, me gusta que ahora se pueda verificar el tipo de dato sin necesidad de clases wrapper.
Me alegra que PHP siga evolucionando. Me trae recuerdos de cuando empecé como freelancer.
La nueva función
array_findde PHP muestra un problema de diseño del lenguaje. Es parecida a la existentearray_search, pero el orden de los argumentos es distinto.No entiendo "public private(set)". "readonly public" me parecería más apropiado.
private(set)de Swift.