PHP 8.4 ist da: Was sich geändert hat und warum es wichtig ist
Die Entwickler-Community hat den lang erwarteten Release von PHP 8.4 begrüßt – eine neue Hauptversion einer der beliebtesten Web-Programmiersprachen. Das Update bringt eine Reihe bedeutender Verbesserungen mit sich, darunter die lang erwarteten Property Hooks, asymmetrische Sichtbarkeit und eine wesentliche Leistungsoptimierung. Lassen Sie uns die wichtigsten Änderungen durchgehen, die jeder PHP-Entwickler kennen sollte.
1. Property Hooks
Die größte Neuerung ist die Möglichkeit, Getter und Setter direkt in der Eigenschaftsdeklaration einer Klasse zu definieren, ohne separate Methoden schreiben zu müssen. Dies vereinfacht die Arbeit mit berechneten oder validierten Feldern radikal.
class User{ public string $name { set => $this->name = trim($value); get => ucfirst($this->name); }}Früher musste man für eine solche Logik separate Methoden getName() und setName() schreiben. Property Hooks machen den Code sauberer und lesbarer.
2. Asymmetrische Sichtbarkeit
Jetzt können unterschiedliche Zugriffsebenen für das Lesen und Schreiben einer Eigenschaft festgelegt werden. Zum Beispiel öffentliches Lesen, aber geschütztes Schreiben:
class Post{ public private(set) string $title;}Dies erspart die Notwendigkeit, nur zur Zugriffskontrolle Getter und Setter zu erstellen, während die Kapselung erhalten bleibt.
3. Verbesserter JIT und Leistung
In PHP 8.4 wurde der JIT-Compiler (Just-In-Time) erheblich überarbeitet. Die Kernentwickler haben die Heuristik für Kompilierungsentscheidungen verbessert und den Overhead bei der Ausführung von heißen Codepfaden reduziert. Ersten Tests zufolge beträgt der Leistungszuwachs in synthetischen Benchmarks zwischen 10% und 25% im Vergleich zu PHP 8.3.
- Beschleunigung von Schleifen und rekursiven Funktionen
- Verbesserte Verarbeitung großer Arrays
- Reduzierung des Speicherverbrauchs im JIT-Modus um bis zu 15%
4. Neue Syntax: Array-Destrukturierung mit Typen
Es wurde die Möglichkeit hinzugefügt, Typen bei der Array-Destrukturierung anzugeben:
[$name, $age] = ['Ivan', 30]; // war[ string $name, int $age ] = ['Ivan', 30]; // wurdeDies verbessert die statische Analyse und macht den Code selbstdokumentierend.
5. Änderungen in der Standardbibliothek
- Neue Funktionen:
array_find(),array_find_key(),array_any()undarray_all()– für präzisere Array-Operationen. - PCRE2-Update: Die Regex-Bibliothek wurde auf Version 10.44 aktualisiert, was einige seltene Fehler behebt.
- Veraltete Funktionen:
session_set_cookie_params()(zugunsten vonini_set()) und mehrere interne Funktionen wurden als veraltet markiert.
6. Veraltungsstatus (Deprecations)
In PHP 8.4 wurden als veraltet markiert:
- Änderung des Rückgabetyps über
#[\\ReturnTypeWillChange]– jetzt ist eine explizite Deklaration erforderlich. - Aufruf von
isset()auf Nicht-Arrays (z.B.