È iniziato il test alpha di PHP 8.1.

È stato presentato il primo rilascio alpha della nuova versione del linguaggio di programmazione PHP 8.1. Il lancio è previsto per il 25 novembre. Le principali novità, già disponibili per il testing o programmate per l'implementazione in PHP 8.1:

  • È stata aggiunta la supporto per le enumerazioni, ad esempio ora è possibile utilizzare le seguenti costruzioni: 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);
  • È stata aggiunta la supporto per i thread leggeri, chiamati fiber, che permettono di gestire il parallelismo a basso livello. Il supporto per i fiber sarà aggiunto ai framework Amphp e ReactPHP. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('dopo la sospensione'); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume('dopo il ripristino');
  • È stata migliorata l'implementazione della cache del codice oggetto (opcache), che ora permette di memorizzare nella cache informazioni sull'ereditarietà delle classi. L'ottimizzazione ha portato a un aumento delle prestazioni di alcune applicazioni del 5-8%.
  • L'operatore di espansione all'interno degli array «…$var», che consente di sostituire array esistenti nella definizione di un nuovo array, è stato ampliato con il supporto per le chiavi stringa (in precedenza erano supportati solo identificatori numerici). Ad esempio, ora è possibile usare nel codice: $array1 = ["a" => 1]; $array2 = ["b" => 2]; $array = ["a" => 0, …$array1, …$array2]; var_dump($array); // ["a" => 1, "b" => 2]
  • È stato introdotto un nuovo tipo 'never', che può essere utilizzato per informare gli analizzatori statici che una funzione termina l'esecuzione del programma, ad esempio, lanciando un'eccezione o eseguendo la funzione exit. function dd(mixed $input): never { exit; }
  • È stata proposta una nuova funzione array_is_list, che consente di determinare se le chiavi in un array sono disposte in ordine crescente di valore numerico, iniziando da 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
  • È stata proposta la possibilità di ridefinire le costanti in una classe durante il processo di ereditarietà. Per vietare la ridefinizione delle costanti della classe genitore, è possibile utilizzare la parola chiave «final». class Foo { public const X = 'foo'; final public const Z = 'foo'; } class Bar extends Foo { public const X = 'bar'; }
  • Sono state proposte le funzioni fsync e fdatasync per forzare il salvataggio delle modifiche dalla cache del disco. $file = fopen(«sample.txt», «w»); fwrite($file, «Some content»); if (fsync($file)) { echo «Il file è stato persistito con successo su disco.»; } fclose($file);
  • È stata aggiunta la possibilità di utilizzare i prefissi «0o» e «0O» per i numeri ottali, oltre al prefisso «0» precedentemente utilizzato. 016 === 0o16; // true 016 === 0O16; // true
  • È stata proposta una limitazione selettiva dell'uso di $GLOBALS, il che porterà a una rottura della retrocompatibilità, ma consentirà di velocizzare notevolmente le operazioni sugli array. Ad esempio, si sta considerando di vietare la scrittura in $GLOBALS e il passaggio di $GLOBALS per riferimento. L'analisi di 2000 pacchetti ha mostrato che solo 23 di essi sarebbero interessati da questa modifica. Ad esempio, in caso di approvazione della proposta, in 8.1 verrà interrotta la supporto per espressioni come: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS);
  • Proseguono i lavori di traduzione delle funzioni dall'uso delle risorse alla manipolazione degli oggetti. Le funzioni finfo_* e imap_* sono state convertite in oggetti.
  • È stata dichiarata obsoleta la trasmissione di valori null come argomenti di funzioni interne contrassegnate come non-nullable. In PHP 8.1 l'uso di costrutti come str_contains('string', null) comporterà un avviso, mentre in PHP 9 porterà a un errore.
  • È stata aggiunta la supporto per gli algoritmi di hashing MurmurHash3 e xxHash.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster