Contact salesFree trial
Blog

Die wichtigsten Funktionen und Verbesserungen in PHP 8.1

PHP
31 Dezember 2021
Share

Nur wenige Tage nach der offiziellen Veröffentlichung freuen wir uns, die sofortige Verfügbarkeit von PHP 8.1 für alle Grid-Plan-Projekte bekannt geben zu können. Die neue PHP-Foundation veröffentlicht jedes Jahr Ende November eine neue Hauptversion, und das ist eine Art vorgezogenes Weihnachtsfest für uns Entwickler und Anwendungsmacher.

Funken und Beschleunigung

PHP 8.1 kommt mit vielen neuen und lang erwarteten Funktionen wie Enums, Readonly-Eigenschaften, First-Class-Callable-Syntax und neuen Initialisierern.

Außerdem bietet es einige nette Leistungsverbesserungen, die auf etwa 5 bis 8 % geschätzt werden. Dmitry Stogov, der Autor dieses beeindruckenden Features, beschreibt dies als eine neue transparente Technologie, die den Overhead der PHP-Klassenvererbung eliminiert.

Und schließlich könnte Fibers nicht weniger als eine bahnbrechende Veränderung im PHP-Ökosystem darstellen, indem es einen Low-Level-Mechanismus zur Verwaltung von Parallelität hinzufügt.

Diese und viele weitere Funktionen sind jetzt verfügbar. Und Sie können sie noch heute ausprobieren.

Enums

Dies ist eine Funktion, die ich schon seit Jahren erwartet habe, und ich kann es kaum erwarten, sie zu benutzen, da sie eine so bequeme Art ist, Sammlungen von konstanten Werten zu verwalten.

enum Status { case Entwurf; case Veröffentlicht; case Archiviert; }

Kopieren Sie das Snippet

class Post { public function __construct( private Status $status = Status::Draft; // ... ) {} public function getStatus(): Status { return $this->status; } public function setStatus(Status $status): void { $this->status = $status; } } $post->setStatus(Status::Active);

Kopieren Sie das Snippet

Enum kann sogar Methoden und Interfaces haben. Wie cool ist das denn?

enum Status { // ... public function color(): string { return match($this) { self::Draft => 'grey', self::Published => 'green', self::Archived => 'red', }; } }

Kopieren Sie das Snippet

interface HasColor { public function color(): string; }

Kopieren Sie das Snippet

enum Status implements HasColor { // ... public function color(): string { /* ... */ } }

Kopieren Sie das Snippet

Schreibgeschützte Eigenschaften

Klasseneigenschaften können als schreibgeschützt markiert werden. Das bedeutet, dass sie nur einmal geschrieben werden können und andernfalls eine Exception geworfen wird.

class Post { public function __construct( public readonly string $title, ... ) {} }

Kopieren Sie das Snippet

$post = new Post(title: 'PHP 8.1 is available', /* ... */); // Alles gut, das Leben ist toll. $post->title = 'Some other and less fancy title'; // Error: Kann die schreibgeschützte Eigenschaft Post::$title nicht ändern

Kopieren Sie das Snippet

Erstklassige Callable-Syntax

PHP 8.1 führt eine neue Syntax für die Erstellung einer Callable ein. Sie können nun eine Closure aus einer Callable erzeugen, indem Sie die Callable aufrufen und ihr ... als Argument übergeben:

function love(Human $a, Human $b) { /* Was ist Liebe ... */ } $love = love(...); $love(a: $someone, b: $someoneElse);

Kopieren Sie das Snippet

neu

Diese Funktion ermöglicht eine breitere Verwendung des neuen Schlüsselworts, das nun in Funktionsdefinitionen als Standardparameter und Attributargumente verwendet werden kann.

Zusammen mit der Constructor Property Promotion, die mit PHP 8.0 eingeführt wurde, kann dies die Größe der Klassen erheblich reduzieren. Weniger Rauschen und mehr Signal: mehr Freiraum für Zen-Entwickler.

class FooController { public function __construct( private Logger $logger = new BarLogger(), ) {} }

Kopieren Sie das Snippet

Fasern

Fibers sind ein neuer Low-Level-Mechanismus zur Vereinfachung der Gleichzeitigkeit. Sie ermöglichen die Erstellung von unterbrechbaren Full-Stack-Funktionen, die zur Implementierung von kooperativem Multitasking in PHP verwendet werden können. Sie werden auch als grüne Threads bezeichnet, da sie Code gleichzeitig ausführen, ohne auf eine Multithreading-Umgebung angewiesen zu sein.

$catFiber = new Fiber(function (): void { // ... $value = Fiber::suspend('taking a nap'); echo 'Cat fiber resuming its activity because of: ' . $value; }); $value = $catFiber->start(); echo 'Aktueller Wert dieser Katzenfaser: ' . $value; // Aktueller Wert der aussetzenden Katzenfaser: Mittagsschlaf $catFiber->resume('some random noise'); // Katzenfaser nimmt ihre Aktivität wieder auf aufgrund von: some random noise

Kopieren Sie das Snippet

Auch wenn es sich hierbei nicht um echte asynchrone oder Multithreading-Funktionen handelt, können Fibers dennoch Neuland für das PHP-Ökosystem bedeuten, da sie einen Paradigmenwechsel in der PHP-Geschichte einleiten. Erfahren Sie mehr über Fibers mit dem RFC.

Probieren Sie es heute aus

PHP 8.1 führt einige einschneidende Änderungen ein, die sich auf älteren Code auswirken können. Sie sollten Ihre Anwendung testen, bevor Sie die PHP-Version aktualisieren. Die gute Nachricht: Das Testen von PHP 8.1 könnte nicht einfacher sein. Erstellen Sie zunächst einen neuen Zweig in Ihrem Repository. Aktualisieren Sie dann Ihre Datei ./.upsun/config.yaml in diesem Zweig und ändern Sie den Schlüssel type in:

type: php:8.1

Kopieren Sie das Snippet

Git-Commit und Deployment: Der Zweig läuft jetzt mit PHP 8.1. Probieren Sie Ihre Anwendung aus, führen Sie Ihre Integrationstests durch und prüfen Sie, ob etwas aktualisiert werden muss. Wenn Sie alle erforderlichen Änderungen vorgenommen haben, führen Sie diesen Zweig wieder mit Ihrem Hauptzweig zusammen. Herzlichen Glückwunsch, Sie verwenden jetzt PHP 8.1 in der Produktion.

Viel Spaß beim Deployen, PHP!

Ihr größtes Werk
steht vor der Tür

Kostenloser Test
Discord
© 2025 Platform.sh. All rights reserved.