Konstanten in ext.php

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
IMC
Mitglied
Beiträge: 724
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Konstanten in ext.php

Beitrag von IMC »

Mir ist aufgefallen das es Erweiterungen gibt die in der class ext Konstanten definieren.
z.B. Board Announcements und Advanced BBCode Box

Diese Konstanten werden meist im ACP html Template, ACP php-Code und in der Migration verwendet.
Ist dies die einzige Möglichkeit, Konstanten, die in der gesamten Erweiterung verfügbar sein sollen, einmalig zu definieren?
Gruß, Thorsten
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2962
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: Konstanten in ext.php

Beitrag von LukeWCS »

Ahja, diesen Weg kannte ich jetzt noch nicht. Merci! :D Auch eine Idee, wozu man ext.php nutzen kann.

Ich habe erst kürzlich (2024) bei der Entwicklung von Limit Multiple Replies noch einen weiteren Weg kennengelernt: über den Class Loader von Symfony, sprich, per YAML Konfig. Hier die Ext (Deny double post) die mir als Basis für LMR diente, da habe ich das zum ersten Mal wahrgenommen:

Konstante definieren:

https://github.com/phpbb-de/phpbb-ext-d ... ces.yml#L2

Konstante referenzieren:

https://github.com/phpbb-de/phpbb-ext-d ... ts.php#L56

So kann man "globale" Konstanten in jeder Klasse seiner Ext nutzen.
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: 724
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: Konstanten in ext.php

Beitrag von IMC »

LukeWCS hat geschrieben: 19.04.2025 19:39 Ahja, diesen Weg kannte ich jetzt noch nicht.
Dann bin ich da ja nicht alleine.
LukeWCS hat geschrieben: 19.04.2025 19:39 über den Class Loader von Symfony
Das habe ich tatsächlich mal verwendet.
https://github.com/IMC-GER/phpBB-Curren ... .yml#L1-L2
Hätte ich nicht gebraucht, wenn ich zu der Zeit schon die Tabelle config_text gekannt hätte.
Gruß, Thorsten
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2962
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: Konstanten in ext.php

Beitrag von LukeWCS »

Dann würde ich sagen:

Ist ext.php sowieso vorhanden?

Ja: das nutzen für "persönliche" globale Konstanten.
Nein: YAML Konfig nutzen.
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: 1274
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: Konstanten in ext.php

Beitrag von Mike-on-Tour »

IMC hat geschrieben: 19.04.2025 19:21 Mir ist aufgefallen das es Erweiterungen gibt die in der class ext Konstanten definieren.
Das war mir auch neu, Danke für den Hinweis, werde ich mir merken.
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2962
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: Konstanten in ext.php

Beitrag von LukeWCS »

Mahlzeit Kollegen und schöne Ostern

Hab mir die Erwähnung der ext.php Methode von Thorsten jetzt auch mal in der Praxis angeschaut und einfach bei einer Ext (EMP) ausprobiert. Die Erkenntnisse dabei mal zusammengefasst:

YAML Methode:

Neben der eigentlichen Definition benötigt man pro Klasse noch einen Klassen Parameter für den Konstruktor. Habe ich eine Konstante die in 3 Klassen benötigt wird, sind es also 4 Einträge in der YAML Datei.

Zusammengefasst:

YAML:
1 Zeile im parameters: Block der YAML Datei pro Konstante.
1 Parameter pro Klasse (wo die Konstante eben benötigt wird) in der YAML Datei.

PHP:
1 Zeile mit Deklaration einer Klassenvariable pro Konstante.
1 Konstruktor Parameter pro Konstante.
1 Zuweisung des Konstruktor Parameters an die Klassenvariable pro Konstante.

Sonstiges: Nachteil der Methode an sich: Werden Konstanten geändert, muss der Cache gelöscht werden. Das ist umständlich und kostet extra Zeit, zumindest während Entwicklung.

ext.php Methode:

Der Aufwand ist hier deutlich geringer und die Handhabung komfortabler. Alleine schon dadurch, dass ich nicht umständlich den Cache löschen muss.

Zusammengefasst:

ext.php:
1 Zeile mit kombinierter Deklaration und Definition in der ext Klasse mittels public const pro Konstante.

PHP:
1 Zeile mit use um die ext Klasse in den Namensraum der jeweiligen Klasse einzubinden.

Sonstiges: Zugriff auf die Konstante erfolgt dann mit dem Präfix ext::.


Alles in allem, ist der Weg den Thorsten gezeigt hat, der deutlich "natürlichere" und elegantere Weg. Die YAML Methode mutet reichlich umständlich an. Und zumindest für mich gibts eh keine Frage ob ext.php schon vorhanden ist, weil das für mich Standard ist; wegen Prüfung der Voraussetzungen. Und da muss ich auch nicht mit zig Deklarationen in der Klasse hantieren, sondern binde einmal die ext Klasse ein und fertig bin ich damit.
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“