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.

In Pocket speichern vorlesen Druckansicht 14 Kommentare lesen

(Bild: Sashkin/Shutterstock.com)

Lesezeit: 5 Min.
Inhaltsverzeichnis

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.

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.

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;
    }
}

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.

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.

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.

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.

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)