PHP 8 - Constructor Property Promotion

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 3127
Registriert: 15.12.2014 10:19
Kontaktdaten:

PHP 8 - Constructor Property Promotion

Beitrag von LukeWCS »

Thorsten, wegen 8.0 und dem Feature davon, welches ich explizit ansprechen wollte: Constructor Property Promotion, das ermöglicht eine erheblich kompaktere Klassen-Einleitung. Dazu vorab ein Beispiel anhand EMP 3.1.0, wo ich das bereits einsetze. Markiert habe ich jeweils den relevanten Teil:

Klassische Notation mit PHP <8.0 - EMP 3.1.0-b17:
https://github.com/LukeWCS/ext-mgr-plus ... hp#L25-L78

PHP 8.0 Notation - EMP 3.1.0-b19:
https://github.com/LukeWCS/ext-mgr-plus ... hp#L25-L50

Die normale Notation braucht hier 54 Zeilen, die kompakte nur 26. Zur Erklärung ein vereinfachtes Schema einer typischen Ext-Klasse:

Code: Alles auswählen

class something_special
{
	// Block A: Deklaration der Klassen-Eigenschaften

	public function __construct
	(
		// Block B: Deklaration der Konstruktor-Parameter
	)
	{
		// Block C: Zuweisung der Konstruktor-Parameter an die Klassen-Eigenschaften
	}

...
}
Bei Constructor Property Promotion entfällt Block A, weil es mit Block B quasi kombiniert notiert werden kann. Und Block C entfällt, weil es implizit durch Block B ausgeführt wird. In meinem Beispiel habe ich in der Konstruktor Funktion nur noch Zuweisungen von rein lokalen Klassen-Eigenschaften. Es kann auch vorkommen, dass die Konstruktor Funktion (Block C) komplett leer bleibt, nämlich dann, wenn eine Klasse nur importiert, aber keine lokalen Klassen-Eigenschaften benötigt. Das dürfte bei üblichen phpBB Exts aber eher selten sein.

edit: Offizielle Vorstellung: https://www.php.net/releases/8.0/de.php ... -promotion
Möge das Backup mit dir sein. Immer.
Kein Support via PN! Siehe den Punkt "Private Nachrichten" im phpBB.de-Knigge.
Erweiterungen - Infos zur artgerechten Haltung / phpBB Ext Check - Analyse von Erweiterungen bezüglich Vorgaben und Kompatibilität
Benutzeravatar
IMC
Mitglied
Beiträge: 819
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: PHP 8 - Constructor Promotion

Beitrag von IMC »

Hi Patrick,
das finde ich gut. Nicht nur, weil ich wieder etwas dazugelernt habe – bis eben kannte ich dieses Konstrukt nicht –, sondern auch, weil es viel Tipperei erspart.
Das Schöne an PHP 8 ist auch das Komma in der letzten Zeile. In 50 % aller Fälle vergesse ich, das Komma in der vorletzten Zeile zu ergänzen, wenn ich etwas hinzufüge.
Gruß, Thorsten

Meine Extensions
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 3127
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: PHP 8 - Constructor Property Promotion

Beitrag von LukeWCS »

Hatte ich noch nirgends im phpBB Umfeld gesehen, darum wollte ich das mal erwähnen. Was Komma angeht, das war eines der ersten 8er Features, welches ich eingesetzt hatte. Dieses kleine aber feine Feature hat 2 Vorteile speziell bei vertikaler Deklaration von Funktionsparametern: einfache Wartbarkeit und quasi einheitliche Darstellung aller Zeilen.
Möge das Backup mit dir sein. Immer.
Kein Support via PN! Siehe den Punkt "Private Nachrichten" im phpBB.de-Knigge.
Erweiterungen - Infos zur artgerechten Haltung / phpBB Ext Check - Analyse von Erweiterungen bezüglich Vorgaben und Kompatibilität
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1346
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: PHP 8 - Constructor Property Promotion

Beitrag von Mike-on-Tour »

Hallo Patrick,
Danke für die Vorstellung dieses PHP 8.x Features, das ich bis dato nicht kannte. Habe es eben mal ausprobiert und es spart in der Klassendeklaration und im Konstruktor jede Menge Zeilen.
Ich werde das jetzt nach und nach in meine Erweiterungen übernehmen, die mindestens PHP 8.0 benötigen.
Kein Support über PN!
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 3127
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: PHP 8 - Constructor Property Promotion

Beitrag von LukeWCS »

nAbend Mike, gerne. Es kann eh kein Mensch wirklich alle Features von PHP kennen, das ist unmöglich, dazu ist die Sprache viel zu komplex. Manchmal entdeckt man in der Doku was interessantes was man gut brauchen kann, oder man sieht bei Kollegen eine elegante Lösung für ein Problem mit Technik, die man noch nicht kannte.

Werde das auch konsequent in allen anderen Exts umsetzen, EMP war der Anfang.
Möge das Backup mit dir sein. Immer.
Kein Support via PN! Siehe den Punkt "Private Nachrichten" im phpBB.de-Knigge.
Erweiterungen - Infos zur artgerechten Haltung / phpBB Ext Check - Analyse von Erweiterungen bezüglich Vorgaben und Kompatibilität
Antworten

Zurück zu „Extension Bastelstube“