Für mein bevorstehendes Projekt (bereits durch ein Pflichtenheft geplant) möchte ich die Vorzüge eines Pluginsystems nutzen. Als grundlegende Programmstruktur würde ich das HMVC pattern vorschlagen, da dieses ein sehr hohes Maß an Flexibilität und Erweiterbarkeit bietet.
Ich hatte bereits innerhalb von fünf Minuten ein triviales Pluginsystem entworfen, welches allerdings überhaupt nicht mit dem HMVC pattern in Verbindung gebracht werden kann:
Ob die im Quellcode vorhandenen Plugins verwendet werden, wird durch eine kleine Datenbanktabelle (Plugin_ID, Plugin_Name, Plugin_IsActive) entschieden und dementsprechend werden die aktivierten Plugins initiiert und die 'execute()' Methode jedes aktiven Plugins ausgeführt. Wie ihr euch bereits denken könnt verwende ich dabei Templates (Achtung: Kein Templatesystem). Diese Templates können ähnlich einer Baumstruktur beliebig tief verschachtelt werden und jedes Template bildet genau eine MVC Triade.
Pluginsysteme bieten natürlich die Möglichkeit zur Installation / Deinstallation und Aktivierung / Deaktivierung und deren Plugins sollten möglichst unabhängig von einander sein (sonst wäre es ja kein Pluginsystem ).
Wie kann ein Pluginsystem realisiert werden, welches auf das HMVC pattern zugeschnitten ist? Ich bitte nur um Ansätze, keine Lösungen
Ich hatte bereits innerhalb von fünf Minuten ein triviales Pluginsystem entworfen, welches allerdings überhaupt nicht mit dem HMVC pattern in Verbindung gebracht werden kann:
PHP-Code:
class PluginManager
{
private $plugins = array();
public function addPlugin(Plugable $plugin)
{
$this->plugins[] = $plugin;
}
public function loadPlugins()
{
foreach ($this->plugins as $plugin)
{
$plugin->execute();
}
}
}
interface Plugable
{
public function execute();
}
class Testplugin1 implements Plugable
{
public function execute()
{
echo "Ich bin Plugin1<br>";
}
}
class Testplugin2 implements Plugable
{
public function execute()
{
echo "Ich bin Plugin2";
}
}
Pluginsysteme bieten natürlich die Möglichkeit zur Installation / Deinstallation und Aktivierung / Deaktivierung und deren Plugins sollten möglichst unabhängig von einander sein (sonst wäre es ja kein Pluginsystem ).
Wie kann ein Pluginsystem realisiert werden, welches auf das HMVC pattern zugeschnitten ist? Ich bitte nur um Ansätze, keine Lösungen
Kommentar