È iniziato il test alpha di PHP 8.1.

Представлен первый альфа-выпуск новой ветки языка программирования PHP 8.1. Релиз намечен на 25 ноября. Основные новшества, уже доступные для тестирования или планируемые к реализации в 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);
  • Добавлена поддержка легковесных потоков, именуемых файберами (Fiber) и позволяющими управлять распараллеливанием на низком уровне. Поддержку файберов планируется добавить во фреймворки Amphp и ReactPHP. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend(‘after suspending’); // … }); $valueAfterSuspending = $fiber->start(); $fiber->resume(‘after resuming’);
  • Улучшена реализация кэша объектного кода (opcache), в которой появилась возможность кэширования информации о наследовании классов. Оптимизация позволила поднять производительность некоторых приложений на 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
  • Предложена возможность переопределения констант в классе в процессе наследования. Для запрета переопределения констант родительского класса можно использовать ключевое слово «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, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster