PHP 8 - Constructor Property Promotion
Verfasst: 28.09.2025 15:06
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:
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
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
}
...
}
edit: Offizielle Vorstellung: https://www.php.net/releases/8.0/de.php ... -promotion