Paket Plugin

Klasse Plugin Registry

  • 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

Nutzung mit Application und Package Registry

  • Application legt das Objekt der Plugin Registry in der Zend Registry unter dem Key 'Dragon_Plugin_Registry' ab
  • Application registriert alle Plugins die in den Paketeinstellungen der Package Registry definiert wurden