PHP 8.5 verständlich erklärt: Pipe, Clone, Arrays und URI
PHP 8.5 erschien am 20. November 2025. Die Neuerungen mit Beispielen und Prüfungen vor dem Upgrade.
PHP 8.5 erschien am 20. November 2025. Die Neuerungen mit Beispielen und Prüfungen vor dem Upgrade.
Version und Kompatibilität
PHP 8.5 wurde am 20. November 2025 veröffentlicht. Der Wechsel von 8.4 auf 8.5 ändert die Nebenversion, nicht die erste Zahl. Prüfen Sie vor einem Produktivupdate Anforderungen von Framework, Erweiterungen und Hosting, lesen Sie die Migrationsanleitung und testen Sie Plugins und Code in Staging mit Backup und Rückweg.
Pipe-Operator
|> übergibt Werte von links nach rechts an aufrufbare Funktionen. trim(...) und strtolower(...) sind im Beispiel Callables erster Klasse; die Closure übernimmt das vorherige Ergebnis. Rechts muss ein Callable stehen, kein beliebiger Ausdruck. Mehrstufiger Code lässt sich so leichter lesen.
<?php
$title = ' PHP 8.5 Released ';
$slug = $title |> trim(...) |> (fn($s) => str_replace(' ', '-', $s)) |> strtolower(...);
var_dump($slug); // string(16) "php-8.5-released"
Klonen mit geänderten Eigenschaften
clone($objekt, ['Eigenschaft' => Wert]) erstellt eine Kopie und setzt Eigenschaften beim Klonen, auch bei readonly-Klassen. Im Beispiel ändert sich alpha nur in der Kopie. Nachträgliche Zuweisung zu einer bereits initialisierten readonly-Eigenschaft wäre dagegen nicht erlaubt.
<?php
readonly class Color {
public function __construct(public int $red, public int $alpha = 255) {}
public function withAlpha(int $alpha): self {
return clone($this, ['alpha' => $alpha]);
}
}
$original = new Color(79);
$copy = $original->withAlpha(128);
Erster und letzter Arraywert
array_first() und array_last() geben Werte in Array-Reihenfolge zurück, nicht nach kleinster oder größter Schlüsselnummer. Bei leerem Array ist das Ergebnis null; wenn null auch als Wert vorkommen kann, prüfen Sie Leerheit getrennt. Anders als reset() und end() ändern sie den internen Zeiger nicht.
<?php
$items = ['first', 'middle', 'last'];
var_dump(array_first($items)); // "first"
var_dump(array_last($items)); // "last"
var_dump(array_first([])); // null
URI-Erweiterung
Uri\Rfc3986\Uri arbeitet nach RFC 3986; es gibt auch APIs für das WHATWG-URL-Modell. Wählen Sie nach Anwendungsfall. Die Erweiterung ersetzt weder automatisch externe Bibliotheken noch URL-Prüfung, Hostkontrolle und Sicherheitsmaßnahmen bei Remote-Anfragen.
<?php
use Uri\Rfc3986\Uri;
$uri = new Uri('https://example.com/path?q=1');
var_dump($uri->getHost()); // "example.com"
Deprecations und Upgrade
Die Casts (boolean), (integer), (double), (binary) sind veraltet; verwenden Sie (bool), (int), (float), (string). Auch Backticks als Alias für shell_exec() sind veraltet. shell_exec() ist deutlicher, aber bei fremden Eingaben nicht sicherer. Shellbefehle möglichst vermeiden und Daten nicht ungeprüft anhängen. Prüfen Sie Warnungen und Migrationshinweise.
Offizielle Quellen
Release: https://www.php.net/releases/8.5/en.php ; Funktionen: https://www.php.net/manual/en/migration85.new-functions.php ; Deprecations: https://www.php.net/manual/en/migration85.deprecated.php ; Migration: https://www.php.net/manual/en/migration85.php .
Teilen
Was ist Ihre Reaktion?
Gefällt mir
0
Gefällt mir nicht
0
Liebe
0
Lustig
0
Wütend
0
Traurig
0
Wow
0