PHP 8.3 Versions-Update
Neue Funktionen und Verbesserungen


PHP stellt eine sehr beliebte Programmiersprache für Webanwendungen und damit eine der wichtigsten Technologien des Internets dar.


Unter dem Motto "Better performance, better syntax, improved type safety" wurde in den vergangenen Tagen (November 2023) der neue Versionszweig 8.3 veröffentlicht. Mit typisierten Klassenkonstanten, dynamischer Syntax zum Abrufen von Klassenkonstanten, schreibgeschützten Änderungen, Überschreibungsattribut, neuer Methode des Zufallszahlengenerators Random\Randomizer::getBytesFromString, neuer Funktion json_validate uvm. wird PHP viele Entwickler begeistern.

 

1. Typisierte Klassenkonstanten


In PHP 8.3 wurde die Typisierung von Klassenkonstanten eingeführt. Entwickler können jetzt den Datentyp von Klassenkonstanten explizit festlegen, was zu klarerem und sichererem Code führt. Dies hilft, unerwartete Fehler zu vermeiden und die Codequalität zu verbessern.

function fun ($x, $y)
// Vor PHP 8.3
interface I {
    const PHP = 'PHP 8.2';
}

// In PHP 8.3
interface I {
    const string PHP = 'PHP 8.3';
}

2. Dynamische Abfrage von Klassenkonstanten


In vorherigen PHP-Versionen wurde die Abfrage von Klassenkonstanten durch die constant-Funktion realisiert. In PHP 8.3 wurde diese Syntax verbessert, um die Lesbarkeit zu erhöhen.

function fun ($x, $y)
// Vor PHP 8.3
var_dump(constant(Foo::class . "::{$searchableConstant}"));

// In PHP 8.3
var_dump(Foo::{$searchableConstant});

3. Neues #[\Override]-Attribut


Das neue #[\Override]-Attribut ermöglicht es Entwicklern, explizit anzuzeigen, dass eine Methode eine Elternmethode überschreibt. Dadurch wird der Code robuster und erleichtert Refactoring-Prozesse.

function fun ($x, $y)
// Vor PHP 8.3
protected function taerDown(): void {
    // ...
}

// In PHP 8.3
#[\Override]
protected function taerDown(): void {
    // ...
}

4. Deep-Cloning von schreibgeschützten Eigenschaften


Mit PHP 8.3 können schreibgeschützte Eigenschaften einmalig innerhalb der magischen __clone-Methode modifiziert werden. Dies ermöglicht eine tiefere Klonung von schreibgeschützten Eigenschaften.

function fun ($x, $y)
// Vor PHP 8.3
$instance = new Foo(new PHP());
$cloned = clone $instance;
$cloned->php->version = '8.3'; // Fehler

// In PHP 8.3
$instance = new Foo(new PHP());
$cloned = clone $instance;
$cloned->php->version = '8.3'; // Erlaubt

5. Neue Funktionen


PHP 8.3 führt auch neue Funktionen ein, darunter json_validate() zur effizienten Überprüfung von JSON und Methoden wie Randomizer::getBytesFromString() zur Generierung von zufälligen Zeichenketten.

function fun ($x, $y)
// Neue json_validate() Funktion
var_dump(json_validate('{ "test": { "foo": "bar" } }')); // true

// Neue Randomizer::getBytesFromString() Methode
$randomizer = new \Random\Randomizer();
$randomDomain = sprintf(
    "%s.example.com",
    $randomizer->getBytesFromString(
        'abcdefghijklmnopqrstuvwxyz0123456789',
        16
    )
);
echo $randomDomain;

6. Weitere Verbesserungen und Änderungen


Zusätzlich zu den oben genannten Änderungen enthält PHP 8.3 auch neue Methoden für DOM-Elemente, Verbesserungen in der Random-Extension, neue Funktionen wie mb_str_pad() und zahlreiche Bugfixes und Optimierungen.

7. Deprecations


Einige ältere Funktionen und Methoden wurden als veraltet markiert, und es gab Anpassungen an der Behandlung von Datum/Zeit-Ausnahmen sowie Änderungen an der range()-Funktion und anderen Teilen der Sprache. Entwickler werden ermutigt, auf PHP 8.3 zu aktualisieren, um von den neuen Funktionen zu profitieren und ihre Anwendungen sicher und auf dem neuesten Stand zu halten. Die vollständige Liste der Änderungen und Anleitungen zur Aktualisierung finden Sie in der offiziellen PHP 8.3-Dokumentation.