5 puntos por GN⁺ 2024-11-22 | 3 comentarios | Compartir por WhatsApp
  • 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

 
carnoxen 2024-11-23

Un lenguaje que, gracias a WordPress y Laravel, al menos no va a morirse de hambre

 
budaestew 2024-11-23

Es un lenguaje con el que no te vas a morir de hambre aunque WordPress y Laravel se vayan al fracaso.

 
GN⁺ 2024-11-22
Comentarios de Hacker News
  • La razón por la que $this->countryCode no 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.

    • Existe esa “magia” del lenguaje donde el acceso a una propiedad se transforma en una llamada a método.
    • No soy usuario de PHP, pero me preocupa que se le agregue este tipo de complejidad al lenguaje.
  • 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.

    • Los property hooks implican que el acceso a propiedades se convierte en llamadas a métodos.
    • He usado funciones parecidas en JS y Perl, pero los métodos explícitos son más claros y más fáciles de extender.
  • 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#.

    • Intenté imitarlo usando __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.

    • Me da gusto que PHP esté incorporando expresividad y azúcar sintáctica de otros lenguajes.
  • 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_find de PHP muestra un problema de diseño del lenguaje. Es parecida a la existente array_search, pero el orden de los argumentos es distinto.

    • Se agregó a PHP porque otros lenguajes tienen funciones así, pero en la mayoría de esos lenguajes no se implementan como funciones globales.
  • No entiendo "public private(set)". "readonly public" me parecería más apropiado.

    • Parece similar a private(set) de Swift.