Die erste Alpha-Version des neuen Zweigs der Programmiersprache PHP 8.4 wurde vorgestellt. Die Veröffentlichung ist für den 21. November geplant. Die wichtigsten neuen Funktionen, die bereits zum Testen verfügbar sind oder für die Implementierung in PHP 8.4 geplant sind:
- Die Unterstützung von Property Hooks wurde hinzugefügt, die es ermöglichen, zusätzliche Logik einzuführen, die beim Ändern oder Zugreifen auf Eigenschaften eines Objekts ausgeführt wird, ohne Lese- und Schreiboperationen über die allgemeinen Funktionen __get und __set abzufangen und ohne zusätzliche Wrapper-Methoden zu erstellen. Der Einsatz von Property Hooks ermöglicht es, den Code erheblich zu reduzieren und das Überschreiben des Verhaltens beim Arbeiten mit Eigenschaften zu vereinfachen, indem ein eigener Handler an jede Eigenschaft gebunden wird. class User { public string $name { set { if (strlen($value) === 0) { throw new ValueError("Name muss nicht leer sein"); } $this->name = $value; } } public function __construct(string $name) { $this->name = $name; } }
- Es ist nun erlaubt, Methodenreferenzen in der 'new'-Konstruktion ohne trennende Klammern anzugeben, d.h. statt '$name = (new MyClass())->method()' kann jetzt '$name = new MyClass()->method()' angegeben werden.
- Statt des allgemeinen Parameters 'opcache.jit_buffer_size' zur Steuerung des JIT-Compilers und zur Einstellung der JIT-Pufferspeichergröße wurden die Parameter 'opcache.jit' und 'opcache.jit_buffer_size' vorgeschlagen. Um JIT zu deaktivieren, kann jetzt 'opcache.jit=disable' statt 'opcache.jit_buffer_size=0' angegeben werden. Außerdem wurden Änderungen vorgenommen, die den Speicherverbrauch verringern und die Leistung von JIT in bestimmten Situationen verbessern.
- Das Verhalten, bei dem für Funktionsparameter mit einem standardmäßig zugewiesenen Wert von null automatisch die Zuweisung von null-Werten erlaubt wurde, wird als veraltet erklärt. Damit solche Parameter null-Werte annehmen können, ist nun eine explizite Angabe des Präfixes '?' erforderlich. Zum Beispiel sollte anstelle von 'function save(Book $book = null) {}' 'function save(?Book $book = null) {}' angegeben werden.
- Die Klasse \Dom\HTMLDocument wurde implementiert, die eine korrekte Analyse von HTML5-Markup unterstützt.
- Die Funktion request_parse_body() wurde hinzugefügt, um HTTP-Anfragen mit dem Inhaltstyp multipart/form-data (RFC1867) zu analysieren.
Quelle: opennet.ru
