PHP 8.5 erschien am 20. November 2025. Der Beitrag empfiehlt die Version knapp ein Jahr später als Zielversion. Laravel 12 und 13 unterstützen PHP 8.3 bis 8.5, Hosting-Plattformen bieten PHP 8.5 an, und die nächste PHP-Version soll im November erscheinen. Der Autor bewertet den Pipe-Operator als größte Syntaxänderung des Releases.
$title = ' PHP 8.5 Released ';
$slug = $title
|> trim(...)
|> (fn($str) => str_replace(' ', '-', $str))
|> (fn($str) => str_replace('.', '', $str))
|> strtolower(...);Der Pipe-Operator übergibt den linken Wert an das Callable auf der rechten Seite. Verkettungen folgen damit der tatsächlichen Ausführungsreihenfolge von oben nach unten. Jeder Schritt muss ein Argument akzeptieren. Für Funktionen mit einem Argument dient die First-Class-Callable-Syntax wie trim(...), andere Fälle verwenden eine geklammerte Arrow-Funktion. Pipes funktionieren mit normalen PHP-Funktionen und benötigen kein Collection- oder Wrapper-Objekt. Das Beispiel macht aus " PHP 8.5 Released " den Slug "php-85-released".
PHP 8.5 führt eine integrierte URI-Erweiterung ein. Sie arbeitet nach den Standards RFC 3986 und WHATWG und liefert ein Objekt. Damit gibt es eine standardorientierte Alternative zu dem Array-Ergebnis von parse_url(). Uri\Rfc3986\Uri verarbeitet https://php.net/releases/8.5/en.php, getHost() liefert dabei "php.net".
Readonly-Objekte können mit clone($this, ['alpha' => $alpha]) kopiert und an einer Stelle geändert werden. Das Attribut #[\NoDiscard] warnt, wenn ein zu prüfender Rückgabewert ignoriert wird. Ein ausdrücklicher Cast auf (void) kennzeichnet ein beabsichtigtes Verwerfen. array_first() und array_last() liefern den ersten beziehungsweise letzten Array-Wert direkt. Bei einem leeren Array geben beide null zurück.
Statische Closures und First-Class Callables dürfen jetzt in konstanten Ausdrücken stehen, auch als Argumente von Attributen. Regeln können dadurch als typgeprüfter Code vorliegen, wo zuvor Zeichenketten verwendet wurden. Weitere Änderungen sind Backtraces bei fatalen Fehlern, curl_share_init_persistent() zur Wiederverwendung von DNS-Daten und Verbindungen über Requests hinweg, #[\Override] für Properties, final bei Constructor Promotion sowie get_error_handler() und get_exception_handler() zum Auslesen installierter Handler.
Neu oder geändert sind Deprecations für den Backtick-Operator zum Ausführen von Shell-Befehlen. Dafür soll shell_exec('ls') verwendet werden. Die Cast-Namen (boolean), (integer), (double) und (binary) weichen (bool), (int), (float) und (string). Ein null-Schlüssel in einem Array soll durch den expliziten Schlüssel '' ersetzt werden. Ein switch-case mit abschließendem Semikolon braucht einen Doppelpunkt. __sleep() und __wakeup() sind soft-deprecated, empfohlen werden __serialize() und __unserialize(). Die INI-Einstellung disable_classes wurde ohne Ersatz entfernt.
PHP 8.5 warnt außerdem beim Cast von NAN, beim Destrukturieren eines Nicht-Arrays und beim Umwandeln eines zu großen Floats in einen int. Vor dem Produktionswechsel sollten Test-Suites mit aktivierten Deprecation-Warnungen laufen. Für Laravel empfiehlt der Beitrag Pipes in einfachen PHP-Helpers, Actions und Data Mappern, clone-Updates für DTOs und Value Objects sowie #[\NoDiscard] für Methoden wie save(), deren false-Rückgabe einen Fehler signalisiert.




Kommentare
Noch keine Kommentare — schreib den ersten.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Nichts angekommen? Wirf einen Blick in den Spam-Ordner — und markiere die Mail dort als „Kein Spam“, dann landet sie künftig direkt im Postfach.