Comenzó la alfa de prueba de PHP 8.1

Se presentó la primera versión alfa de la nueva rama del lenguaje de programación PHP 8.1. El lanzamiento está programado para el 25 de noviembre. Las principales novedades, ya disponibles para pruebas o planificadas para implementarse en PHP 8.1:

  • Se agregó soporte para enumeraciones, por ejemplo, ahora se pueden utilizar las siguientes construcciones: enum Status { case Pending; case Active; case Archived; } class Post { public function __construct( private Status $status = Status::Pending; ) {} public function setStatus(Status $status): void { // … } } $post->setStatus(Status::Active);
  • Se agregó soporte para fibras ligeras, llamadas ‘fibers’, que permiten gestionar la paralelización a nivel bajo. Se planea agregar soporte para fibras en los frameworks Amphp y ReactPHP. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend(‘after suspending’); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume(‘after resuming’);
  • Se mejoró la implementación de la caché de código objeto (opcache), que ahora permite almacenar información sobre la herencia de clases. Esta optimización ha incrementado el rendimiento de algunas aplicaciones entre un 5% y un 8%.
  • El operador de expansión dentro de los arreglos ‘…$var’, que permite realizar la sustitución de arreglos existentes al definir un nuevo arreglo, se amplió con el soporte de claves de tipo cadena (anteriormente solo se admitían identificadores numéricos). Por ejemplo, ahora se puede utilizar en el código: $array1 = [‘a’ => 1]; $array2 = [‘b’ => 2]; $array = [‘a’ => 0, …$array1, …$array2]; var_dump($array); // [‘a’ => 1, ‘b’ => 2]
  • Se introdujo un nuevo tipo ‘never’, que se puede utilizar para informar a los analizadores estáticos que una función detiene la ejecución del programa, por ejemplo, al lanzar una excepción o ejecutar una función exit. function dd(mixed $input): never { exit; }
  • Se propuso una nueva función array_is_list, que permite determinar si las claves en un arreglo están ordenadas en orden ascendente de valores numéricos, comenzando desde 0: $list = [‘a’, ‘b’, ‘c’]; array_is_list($list); // true $notAList = [1 => ‘a’, 2 => ‘b’, 3 => ‘c’]; array_is_list($notAList); // false $alsoNotAList = [‘a’ => ‘a’, ‘b’ => ‘b’, ‘c’ => ‘c’]; array_is_list($alsoNotAList); // false
  • Se ha propuesto la posibilidad de redefinir constantes en una clase durante el proceso de herencia. Para prohibir la redefinición de constantes de la clase padre, se puede utilizar la palabra clave «final». class Foo { public const X = «foo»; final public const Z = «foo»; } class Bar extends Foo { public const X = «bar»; }
  • Se han propuesto las funciones fsync y fdatasync para forzar el guardado de los cambios desde la caché del disco. $file = fopen(«sample.txt», «w»); fwrite($file, «Some content»); if (fsync($file)) { echo «El archivo ha sido guardado correctamente en el disco.»; } fclose($file);
  • Se ha agregado la capacidad de usar los prefijos «0o» y «0O» para números octales, además del prefijo «0» previamente utilizado. 016 === 0o16; // true 016 === 0O16; // true
  • Se ha propuesto restringir selectivamente el uso de $GLOBALS, lo que resultará en una ruptura de compatibilidad, pero permitirá acelerar significativamente las operaciones con matrices. Por ejemplo, se considera la posibilidad de prohibir la escritura en $GLOBALS y pasar $GLOBALS por referencia. Un análisis de 2000 paquetes mostró que solo 23 de ellos se verían afectados por este cambio. Por ejemplo, si se aprueba la propuesta en 8.1, el soporte para expresiones como: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS); se terminará.
  • Se ha continuado el trabajo en la transición de funciones de uso de recursos a manipulación de objetos. Las funciones finfo_* e imap_* se han trasladado a objetos.
  • Se ha declarado obsoleta la transmisión de valores nulos como argumentos de funciones internas marcadas como no anulables. En PHP 8.1, el uso de construcciones como str_contains(«string», null) generará una advertencia, y en PHP 9 resultará en un error.
  • Se ha agregado soporte para los algoritmos de hash MurmurHash3 y xxHash.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster