Die Alpha-Tests von PHP 8.1 haben begonnen.

Die erste Alpha-Version der neuen PHP 8.1-Programmiersprache wurde vorgestellt. Der Release ist fĂŒr den 25. November geplant. Die wichtigsten Neuerungen, die bereits zum Testen verfĂŒgbar sind oder in PHP 8.1 implementiert werden sollen:

  • Die UnterstĂŒtzung von AufzĂ€hlungen wurde hinzugefĂŒgt, zum Beispiel können jetzt folgende Konstruktionen verwendet werden: 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);
  • Die UnterstĂŒtzung fĂŒr leichte Threads, genannt Fibers, die eine Verwaltung der ParallelitĂ€t auf niedriger Ebene ermöglichen, wurde hinzugefĂŒgt. Die UnterstĂŒtzung fĂŒr Fibers soll in die Frameworks Amphp und ReactPHP integriert werden. $fiber = new Fiber(function (): void { $valueAfterResuming = Fiber::suspend('nach der Aussetzung'); // 
 }); $valueAfterSuspending = $fiber->start(); $fiber->resume('nach der Wiederaufnahme');
  • Die Implementierung des Opcache wurde verbessert, wobei die Möglichkeit hinzugefĂŒgt wurde, Informationen ĂŒber die Vererbung von Klassen zu cachen. Diese Optimierung konnte die Leistung mancher Anwendungen um 5-8 % steigern.
  • Der Unpacking-Operator innerhalb von Arrays „
$var“, der es ermöglicht, bestehende Arrays bei der Definition eines neuen Arrays zu substituieren, wurde um die UnterstĂŒtzung von SchlĂŒssel-Werten fĂŒr Strings erweitert (zuvor wurden nur numerische Identifikatoren unterstĂŒtzt). Zum Beispiel kann jetzt folgender Code verwendet werden: $array1 = ['a' => 1]; $array2 = ['b' => 2]; $array = ['a' => 0, 
$array1, 
$array2]; var_dump($array); // ['a' => 1, 'b' => 2]
  • Ein neuer Typ „never“ wurde eingefĂŒhrt, der verwendet werden kann, um statische Analysatoren darĂŒber zu informieren, dass eine Funktion die AusfĂŒhrung des Programms beendet, zum Beispiel durch das Auslösen einer Ausnahme oder das AusfĂŒhren der Funktion exit. function dd(mixed $input): never { exit; }
  • Eine neue Funktion array_is_list wurde vorgeschlagen, die bestimmen kann, dass die SchlĂŒssel in einem Array in aufsteigender Reihenfolge numerischer Werte, beginnend mit 0, angeordnet sind: $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
  • Es wurde die Möglichkeit eingefĂŒhrt, Konstanten in Klassen wĂ€hrend der Vererbung zu ĂŒberschreiben. Um das Überschreiben von Konstanten der Basisklasse zu verhindern, kann das SchlĂŒsselwort „final“ verwendet werden. class Foo { public const X = "foo"; final public const Z = "foo"; } class Bar extends Foo { public const X = "bar"; }
  • Die Funktionen fsync und fdatasync wurden vorgeschlagen, um Änderungen aus dem Festplattencache zwangsweise zu speichern. $file = fopen("sample.txt", "w"); fwrite($file, "Some content"); if (fsync($file)) { echo "Die Datei wurde erfolgreich auf die Festplatte gespeichert."; } fclose($file);
  • Die Verwendung von PrĂ€fixen „0o“ und „0O“ fĂŒr oktale Zahlen wurde zusĂ€tzlich zum zuvor verwendeten PrĂ€fix „0“ eingefĂŒhrt. 016 === 0o16; // true 016 === 0O16; // true
  • Es wird vorgeschlagen, die Anwendung von $GLOBALS selektiv einzuschrĂ€nken, was zu einem Verlust der AbwĂ€rtskompatibilitĂ€t fĂŒhren wird, jedoch die Operationen mit Arrays erheblich beschleunigen könnte. So wird beispielsweise in ErwĂ€gung gezogen, das Schreiben in $GLOBALS zu verbieten und $GLOBALS per Referenz zu ĂŒbergeben. Eine Analyse von 2000 Paketen hat gezeigt, dass nur 23 davon von dieser Änderung betroffen sind. Bei Annahme des Vorschlags wird in 8.1 die UnterstĂŒtzung solcher AusdrĂŒcke eingestellt: $GLOBALS = []; $GLOBALS += []; $GLOBALS =& $x; $x =& $GLOBALS; unset($GLOBALS); by_ref($GLOBALS);
  • Die Arbeit an der Umstellung von Funktionen von Ressourcennutzung auf Objektmanipulation wurde fortgesetzt. Die Funktionen finfo_* und imap_* wurden auf Objekte umgestellt.
  • Die Übergabe von null-Werten als Argumente an interne Funktionen, die als non-nullable gekennzeichnet sind, wurde fĂŒr veraltet erklĂ€rt. In PHP 8.1 fĂŒhrt die Verwendung von Konstruktionen wie str_contains("string", null) zu einer Warnung, in PHP 9 zu einem Fehler.
  • Die UnterstĂŒtzung fĂŒr die Hash-Algorithmen MurmurHash3 und xxHash wurde hinzugefĂŒgt.

Quelle: opennet.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster