Heute wurde die neue PHP-Version 8.4 veröffentlicht. Wir haben diese PHP-Version bereits auf allen Webservern installiert, so dass Sie sie ab jetzt für Ihre Web-Anwendungen verwenden können.
Neuerungen und Verbesserungen
Für viele Anwender:innen zählt vor allem eines: schnellere Ladezeiten durch eine verbesserte Ausführungsgeschwindigkeit. In ersten Tests konnten wir jedoch keine signifikanten Performance-Unterschiede zwischen PHP 8.4 und der Vorgängerversion 8.3 feststellen. Dennoch sind in spezifischen Szenarien spürbare Verbesserungen durchaus möglich.
Eine nützliche Neuerung in PHP 8.4 sind Propery Hooks, dadurch lässt sich redundanter Boilerplate-Code für Get()- und Set()-Methoden reduzieren. Bei folgender Beispielklasse ohne Property Hooks müssen Get()- und Set()-Methoden definiert werden:
class User
{
private $name;
public function __construct(string $name) {
$this->name = $name;
}
public function getName(): string {
return $this->name;
}
public function setName(string $name): void {
if (strlen($value) === 0) {
throw new ValueError("Name must be non-empty");
}
$this->name = $name;
}
}
Mit Property Hooks lässt die Klasse wie folgt vereinfachen:
class User
{
public string $name {
set {
if (strlen($value) === 0) {
throw new ValueError("Name must be non-empty");
}
$this->name = $value;
}
}
public function __construct(private string $name) {
$this->name = $name;
}
}
Für Arrays gibt es nun 4 zusätzliche Callback-Funktionen array_find()
, array_find_key()
, array_any()
und array_all()
. Zur Nutzung dieser Funktionen beachten Sie die folgenden Beispiele:
$array = [
'a' => 'dog',
'b' => 'cat',
'c' => 'cow',
'd' => 'duck',
'e' => 'goose',
'f' => 'elephant'
];
// Find the first animal with a name longer than 4 characters.
var_dump(array_find($array, function (string $value) {
return strlen($value) > 4;
})); // string(5) "goose"
// Find the first animal with a name longer than 4 characters.
var_dump(array_find_key($array, function (string $value) {
return strlen($value) > 4;
})); // string(1) "e"
// Check, if any animal name is longer than 5 letters.
var_dump(array_any($array, function (string $value) {
return strlen($value) > 5;
})); // bool(true)
// Check, if all animal names are shorter than 12 letters.
var_dump(array_all($array, function (string $value) {
return strlen($value) < 12;
})); // bool(true)
Eine weitere Neuerung ist die Unterstützung von HTML5 in der DOM Extension, außerdem wurden in der XML Extension Probleme bei der Verarbeitung großer XML-Dateien behoben.
Entfernung veralteter Extensions
Die veralteten PHP-Extensions IMAP und Pspell wurden in PHP 8.4 entfernt, da die Extensions selbst sowie die zugrundeliegenden Softwarebibliotheken veraltet sind und seit Jahren nicht mehr aktualisiert wurden. Als Alternative zu Pspell kann die Extension Enchant genutzt werden.
Da es in PHP 8.4 kaum schwerwiegende nicht abwärtskompatible Änderungen zur Vorgängerversion 8.3 gibt, sind viele Web-Anwendungen bereits mit PHP 8.4 kompatibel.
Auf der PHP-Webseite finden sie eine vollständige Übersicht über alle nicht abwärtskompatiblen Änderungen und Neuerungen.
PHP 8.4 aktivieren
Sie können PHP 8.4 wie gewohnt über das Kundenmenü oder auf den Webservern per .htaccess-Konfigurationsdatei mittels folgender Direktive auswählen:
AddHandler application/x-httpd-php84 .php
Verlängerung der Sicherheitsunsterstützung
Die PHP-Entwickler haben die Phase der Sicherheitsunsterstützung für ältere PHP-Versionen um ein Jahr auf nun insgesamt zwei Jahre verlängert. Damit wird die PHP-Version 8.1 noch bis zum 31.12.2025 mit Sicherheitsupdates versorgt.
Die PHP-Version 8.2 wechselt ab dem 1.1.2025 in die Phase der Sicherheitsunsterstützung. Ab dann wird es für diese PHP-Version nur noch Updates bei sicherheitskritischen Fehlern geben, andere nicht sicherheitskritische Fehler werden nicht mehr behoben.
Eine Übersicht der Unterstützungsphasen aller PHP-Versionen finden Sie auf der PHP-Webseite.