Entwicklung & Code
PHP 8.5 bringt neue Sprachfeatures und mehr Lesbarkeit für Developer
Nach mehreren Release Candidates hat das PHP-Team die stabile Version 8.5 veröffentlicht. Die neue Hauptversion der Programmiersprache führt mehrere Sprachverbesserungen ein, die Lesbarkeit und Sicherheit erhöhen sollen. Neben Feinschliff an bestehenden Funktionen kommen einige neue Features hinzu.
Weiterlesen nach der Anzeige
URI-Erweiterung für saubere Adressverarbeitung
Mit der neuen URI-Extension hält erstmals eine native Unterstützung für strukturierte Arbeit mit URLs und URIs Einzug in PHP. Sie soll eine einfache und sichere Zerlegung, Manipulation und den Wiederaufbau von Adressen ermöglichen – ohne auf externe Libraries zurückgreifen zu müssen. Ziel ist, typische Fehlerquellen beim Parsen und Zusammenfügen von URLs zu vermeiden und den Code zugleich klarer und konsistenter zu machen.
(Bild: nuevoimg / 123rf.com)
Am 25. November findet die betterCode() PHP statt, eine Online-Konferenz von iX und dpunkt.verlag in Kooperation mit thePHP.cc. Interessierte können sich in Vorträgen unter anderem über PHP 8.5, den Caddy Server und FrankenPHP informieren. Tickets sind über die Konferenz-Website erhältlich.
Pipe Operator: Datenflüsse lesbarer
Eine weitere zentrale Neuerung ist der Pipe Operator (|>), der funktionale Aufrufketten deutlich lesbarer macht. Statt verschachtelter Funktionsaufrufe lassen sich Ergebnisse nun Schritt für Schritt weiterreichen. Das sorgt für eine bessere Lesbarkeit von komplexen Datenflüssen.
Das Beispiel aus dem RFC soll dies verdeutlichen:
function getUsers(): array {
return [
new User('root', isAdmin: true),
new User('john.doe', isAdmin: false),
];
}
function isAdmin(User $user): bool {
return $user->isAdmin;
}
// This is the new syntax.
$numberOfAdmins = getUsers()
|> (fn ($list) => array_filter($list, isAdmin(...)))
|> count(...);
var_dump($numberOfAdmins); // int(1);
Clone With: Klonen mit gezielten Anpassungen
Weiterlesen nach der Anzeige
PHP 8.5 hat das neue Sprachfeature clone with zum Erzeugen leicht veränderter Objektkopien im Gepäck. Während bisher beim Klonen alle Eigenschaften übernommen und Entwicklerinnen und Entwickler Änderungen manuell vornehmen mussten, lassen sich nun gezielt einzelne Werte direkt beim Klonvorgang anpassen.
Folgendes Beispiel soll das Prinzip verdeutlichen:
readonly class Color
{
public function __construct(
public int $red,
public int $green,
public int $blue,
public int $alpha = 255,
) {}
public function withAlpha(int $alpha): self
{
return clone($this, [
'alpha' => $alpha,
]);
}
}
$blue = new Color(79, 91, 147);
$transparentBlue = $blue->withAlpha(128);
So ermöglicht clone with vor allem bei unveränderlichen Datenstrukturen eine elegantere und besser lesbare Syntax.
Feinere Kontrolle mit dem #[NoDiscard]-Attribut
Das neue Attribut #[\NoDiscard] unterstützt Entwicklerinnen und Entwickler beim Aufspüren potenzieller Logikfehler. Wird das Ergebnis einer mit #[\NoDiscard] markierten Funktion verworfen, gibt PHP künftig eine Warnung aus. So lassen sich versehentlich ignorierte Rückgabewerte schneller aufdecken, was die Codequalität erhöhen und unnötige Fehlersuche reduzieren soll.
Konstante Ausdrücke mit mehr Macht
Schließlich stärkt die Version auch PHPs Möglichkeiten zur Metaprogrammierung: Ab sofort lassen sich Closures, Casts und First-Class Callables in konstanten Ausdrücken verwenden. Diese Erweiterung öffnet die Tür für noch flexiblere Definitionen im Compile-Time-Kontext – beispielsweise beim Aufbau von Konfigurationsobjekten oder dynamischen Standardwerten.
Weitere Informationen zum Release finden sich bei php.net sowie im Changelog.
(mdo)