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 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.

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 Gefällt mir 0
Gefällt mir nicht Gefällt mir nicht 0
Liebe Liebe 0
Lustig Lustig 0
Wütend Wütend 0
Traurig Traurig 0
Wow Wow 0