Event-System PSR-14 kompatibel machen
Von der PHP Framework Interop Group (PHP-FIG) gibt es mit PSR-14 einen Standard für die Umsetzung eines Event Dispatchers:
The goal of this PSR is to establish a common mechanism for event-based extension and collaboration so that libraries and components may be reused more freely between various applications and frameworks.
Ich habe den Standard überflogen und der größte Unterschied zum QUIQQER-Event-System ist, dass die Events nicht mutwillig durch Strings und ein Array von Parametern definiert werden.
Stattdessen werden Events durch Klassen und Interfaces definiert:
Statt:
QUI::getEvents()->fireEvent(
'onBricksGetAreaByProject',
[$this, $Project, &$bricks]
);
Würde man folgendes machen:
QUI::getEvents()->dispatch(
new BricksGetAreaByProjectEvent($this, $Project, &$bricks)
);
Der große Vorteil dabei ist, dass Listener und Emitter die genaue Signatur des Events kennen und gezwungen werden diese einzuhalten.
Mit unserem Ansatz muss man sich darauf verlassen, dass jeder, der das Event auslöst, die genauen Parameter (und deren Typen) kennt und diese auch korrekt verwendet.
Es gibt auch schon einige fertige Event Dispatching System, die man adaptieren könnte: