PHP 8.4: EinfĂĽhrung von Property Hooks und asymmetrischer Sichtbarkeit
Das aktuelle Release zur Programmiersprache PHP bringt Neuerungen wie Property Hooks, asymmetrische Sichtbarkeit und neue Array-Suchfunktionen.

(Bild: Sashkin/Shutterstock.com)
Für die Programmiersprache PHP liegt mit Version 8.4 ein neues Release vor. Die Veröffentlichung bringt eine Reihe von bedeutenden Neuerungen und Optimierungen, die die Entwicklung mit der beliebten Programmiersprache weiter vereinfachen sollen. Zu den Highlights der neuen Version gehören die Einführung von Property Hooks, asymmetrische Sichtbarkeit sowie neue Array-Suchfunktionen.
PHP 8.4 bringt Property Hooks
Mit der Einführung von Property Hooks in PHP 8.4 können Entwicklerinnen und Entwickler das Verhalten von Eigenschaften (Properties) in Klassen gezielt steuern. Diese Funktion ermöglicht es, get
- und set
-Hooks zu definieren, um benutzerdefinierte Logik beim Zugriff auf oder bei der Änderung von Eigenschaften auszuführen. Dadurch wird die Notwendigkeit für umfangreiche Getter- und Setter-Methoden verringert. Zudem lassen sich Eigenschaften nun in Schnittstellen definieren, was die Spezifikation von Typinformationen und Operationen erleichtern soll. Property Hooks bieten somit eine präzisere Kontrolle über den Lebenszyklus von Eigenschaften.
Asymmetrische Sichtbarkeit
Asymmetric Property Visibility in PHP 8.4 erlaubt es, unterschiedliche Sichtbarkeiten für das Lesen und Schreiben von Eigenschaften festzulegen. Eine Property lässt sich so konfigurieren, dass sie öffentlich lesbar, aber nur intern modifizierbar ist. Dieses Feature tritt an, um Entwicklern mehr Flexibilität und Kontrolle über den Zugriff auf Eigenschaften in Klassen zu bringen. Ein Beispiel aus dem Ankündigungsbeitrag zu PHP 8.4:
<?php
class Example
{
// The first visibility modifier controls the get-visibility, and the second modifier
// controls the set-visibility. The get-visibility must not be narrower than set-visibility.
public protected(set) string $name;
public function __construct(string $name)
{
$this->name = $name;
}
}
Neue Array-Find-Funktionen
PHP 8.4 bringt neue Array-Suchfunktionen, die es Entwicklern erleichtern sollen, Werte in Arrays zu finden und zu überprüfen. Zu den neuen Funktionen gehören:
array_find
array_find_key
array_any
array_all
Diese Funktionen akzeptieren jeweils ein Array und einen Callback als Argumente.
array_find
gibt das erste Element zurĂĽck, fĂĽr das der Callback true
ergibt, während array_find_key
den SchlĂĽssel (Key) dieses Elements zurĂĽckgibt. array_any
prĂĽft, ob mindestens ein Element im Array den Callback erfĂĽllt, und array_all
überprüft, ob alle Elemente im Array den Callback bestehen. Diese Neuerungen haben das Ziel, eine präzisere und effizientere Möglichkeit zu schaffen, mit Arrays zu arbeiten, indem sie häufig benötigte Such- und Überprüfungslogik kapseln.
Vereinfachung der Syntax
PHP 8.4 kommt mit überarbeiteter Syntax, sodass Entwicklerinnen und Entwickler beim direkten Instanziieren einer Klasse und dem anschließenden Aufruf einer Methode die Klammern um die Instanziierung weglassen können. Vorher mussten sie Klammern verwenden.
Das Entwicklungsteam zeigt einen Vergleich der Syntax vor PHP 8.4 mit der neuen Version:
PHP < 8.4
class PhpVersion
{
public function getVersion(): string
{
return 'PHP 8.3';
}
}
var_dump((new PhpVersion())->getVersion());
PHP 8.4
class PhpVersion
{
public function getVersion(): string
{
return 'PHP 8.4';
}
}
var_dump(new PhpVersion()->getVersion());
PHP 8.4 sorgt mit der Vereinfachung der Syntax für mehr Lesbarkeit, insbesondere bei Situationen, in denen eine Klasse instanziiert und sofort eine Methode aufgerufen wird, ohne dass die Instanz weiter benötigt wird.
Just in Time
Mit dem Update ändern sich die Standardwerte für die INI-Konfigurationsoptionen zur Just-in-Time-Kompilierung (JIT), wobei JIT weiterhin standardmäßig deaktiviert bleibt. Die Änderungen betreffen die Werte für opcache.jit
und opcache.jit_buffer_size
, die Entwicklerinnen und Entwickler ab sofort auf tracing
oder disable
und 0
beziehungsweise 64M
setzen können – JIT erfordert eine explizite Konfiguration der Puffergröße, um aktiviert zu werden.
UnterstĂĽtzung fĂĽr HTML
Das Entwicklerteam hinter PHP 8.4 hat die Unterstützung für HTML5 durch die Einführung einer leistungsfähigeren HTML5-Parsing-Bibliothek überarbeitet. Zuvor unterstützte der DOM-Parser in PHP nur HTML-4.01-Funktionen. Mit dem Update bietet PHP nun umfassende Unterstützung für HTML5. Es gibt neue DOM-Klassen in einem separaten PHP-Namespace, die speziell für HTML5 entwickelt wurden und sich von den bestehenden XML-orientierten DOM-Klassen unterscheiden. Diese Änderungen ermöglichen es Developern, HTML5-Standards besser zu nutzen, wenn sie HTML-Dokumente parsen oder erstellen.
Weitere Neuerungen
PHP 8.4 führt unter anderem die Unterstützung zusätzlicher HTTP-Verben für $_POST
und $_FILES
ein sowie neue Multibyte-Trim-Funktionen wie mb_trim()
. Es gibt klarere Rundungsmodi fĂĽr round()
und spezifische PDO-Subklassen für Datenbanktreiber. Überarbeitete Callbacks für DOM und XSL unterstützen jetzt Closures. Die Unterstützung für Lazy Objects ermöglicht die Erstellung von Proxy-Objekten. Ein neues Attribut, #[Deprecated]
, markiert veraltete Funktionen, und es gibt Ăśberarbeitungen bei den BCMath-, GMP- und DOM-Erweiterungen. Letzte wurden bereits im Beitrag zum ersten Release Candidate zu PHP 8.4 beschrieben.
Wer sich wundert, wieso bereits Version 8.4.1 veröffentlicht ist: Gemäß Releasezyklus wird 48 Stunden vor offiziellem Release ein Tag im Git-Repository erzeugt, das 8.4.0 heißt. Diesmal haben das verantwortliche Entwicklerteam allerdings festgestellt, dass wichtige Security Fixes darin nicht enthalten waren, sodass sie ein neues Tag für Version 8.4.1 angelegt haben und damit live gegangen sind.
Weitere Informationen zum Release finden sich auf php.net. Der ChangeLog enthält zusätzliche Details zu den Neuerungen. Darüber hinaus stellen die Entwickler einen Migration Guide zur Verfügung.
(mdo)