- Kann genutzt werden um der Anwendung Einstiegspunkte zu geben an welche sich Plugins einhängen können
-
Interface definieren welches den Einstiegspunkt definiert und von Plugins implementiert wird
interace %packagenamespace%_%packagename%_Plugin_%interfacename%_Interface
{
public function %methodname%(%param%);
}
-
Plugin definieren welches sich in den Einstiegspunkt hängen kann
class %packagenamespace%_%packagename%_Plugin_%pluginname%
implements %packagenamespace%_%packagename%_Plugin_%interfacename%_Interface
{
public function %methodname%(%param%)
{}
}
-
Plugin Registry nutzen um Plugins zu registrieren und die Einstiegspunkte aufzurufen
$pluginRegistry = new Dragon_Plugin_Registry();
$pluginRegistry
->addPlugin('%packagenamespace%_%packagename%_Plugin_%pluginname%');
->invoke('%packagenamespace%_%packagename%_Plugin_%interfacename%_Interface', array(%param%));
- addPlugin / addPlugins können auch das Objekt statt nur dessen Klassenname entgegen nehmen
- getPlugins kann genutzt werden um alle Plugins einer Schnittstelle zurück geben zu können
- invoke kann auch der Methodenname übergeben werden, wenn eine Pluginschnittstelle mehrere Methoden definiert