© Milos Plazacic / Shutterstock.com
Constructor Property Promotion, Named Arguments und mehr

Neue Funktionen in PHP 8.0


Die neueste Version der beliebtesten serverseitigen Sprache des Webs ist da: PHP 8.0 hat das Licht der Welt erblickt. Das lang erwartete Major-Release ist Grund genug, sich die wichtigsten Features noch einmal genauer anzusehen.

Nach einem Jahr Entwicklungszeit wurde PHP 8.0 nun der Weltöffentlichkeit vorgestellt. Mit einer Fülle von neuen Funktionen, die mehr Leistung mit weniger Code versprechen, ist es die am meisten erwartete Version von PHP seit ... nun, seit v7.4 im letzten Jahr. PHP ist aufregend, was soll ich anderes sagen? PHP 8.0 ist vollgestopft mit neuen Funktionen: Von einem ausdrucksstärkeren Typisierungssystem über match()-Ausdrücke bis hin zu den potenziell enormen Verbesserungen bei persistenten Diensten durch die neue JIT-Erweiterung – PHP 8 hat für jeden etwas zu bieten. Es gibt jedoch drei Features, die ich besonders hervorheben möchte, da sie im Mittelpunkt der neuen Version stehen. Diese Features befanden sich alle bereits länger auf der Wunschliste, aber vor allem im Zusammenspiel ergeben sie etwas, das größer ist als die Summe ihrer Teile.

Constructor Property Promotion

Das erste Feature ist die Constructor Property Promotion. Constructor Promotion ist nur syntaktischer Zucker, um das Schreiben von Konstruktoren und Objekteigenschaften weniger repetitiv zu machen. Ein Beispiel ist die Klasse, die in Listing 1 zu sehen ist. Dieser Code kann nun wie in Listing 2 dargestellt zusammengefasst werden.

Listing 1

<?php class MailMessage { private string $to; private string $subject; private string $from; private string $body; private array $cc; private array $bcc; private string $attachmentPath; public function __construct( string $to; string $subject; string $from; string $body; array $cc = []; array $bcc = []; string ?$attachmentPath = null; ) { $this->to = $to; $this->subject = $subject; $this->from = $from; $this->body = $body; $this->cc = $cc; $this->bcc = $bcc; $this->attachmentPath = $attachmentPath; } }

Listing 2

<?php Class MailMessage { public function __construct( private string $to, private string $subject, private string $from, private string $body, private array $cc = [], private array $bcc = [], private ?string $attachmentPath = null, ) {} }

Wir sehen das gleiche Ergebnis bei einem Viertel des geschriebenen Codes. Und natürlich können Sie immer noch Dinge wie Non-promoted Properties und Parameter oder einen Constructor Body für zusätzliches Verhalten verwenden. Das mag nur wie eine kleine Änderung erscheinen, ist aber in Wirklichkeit ziemlich mächtig. Nicht nur, weil es unnötig ausführlichen Code reduziert (was großartig ist), sondern weil es bestimmte Ansätze einfacher macht. Insbesondere die Definition eines struct-ähnlichen Objekts (also eines, das nur öffentliche Eigenschaften enthält, die vom Konstruktor gemappt werden) ist vier Mal einfacher zu schreiben.

Heutzutage werden viele Entwickler und Entwicklerinnen standardmäßig assoziative Arrays für Quick-and-dirty-Strukturen verwenden. Das ist weniger selbstdokumentierend, verbraucht mehr Speicher, ist schwieriger zu benutzen und ist in...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang