[PHP] Pluginsystem - nur wie?

  • Hallo,


    ich versuche schon seit einiger Zeit durch das Untersuchen des WCF1 Frameworks eine Vorstellung zu bekommen, wie man ein effizientes Pluginsystem mit Designindividualisierung implementieren kann.
    Da ich mich leider noch nie in fremdem Code zurechtgefunden habe (:D) blieb das leider aber auch nur ein Versuch.


    Google hat mir da leider nicht weiterhelfen können, weil ich bisher kaum Tutorials finden konnte, die eine Analogie zum WCF1 aufweisen (die Möglichkeiten der Tutorials, die ich gefunden habe, waren eher ein Witz).


    Nun wäre es super, wenn sich hier jemand Engagiertes finden würde, der hier mal das Prinzip und eine grobe Anleitung posten könnte, wie man so ein Pluginsystem, wie dem des WCF1, entwickeln könnte.


    Vielen Dank im Voraus.


    Grüße

  • Ich weiß nicht wie das plugin system von WCF1 ist . ABer ich kann dir kurz erläutern wie meins funktioniert


    Ich habe in meinem System den sogenanten Core der nix weiter als PHPDI mit ein paar privaten erweiterungen ist. Dort kann ich quasi PHP klassen in ein Array schreiben und habe diese dann global überall zur verfügung.


    Wenn ich nun ein neues Plugin entwickeln möchte lege ich in meinem Plugins Ordner einen neuen Ordner mit dem Namen des Plugins an. Dort drin erstelle ich nun eine Klasse mit dem namen des Plugins z.B.


    (Achtung pseudo Code)


    PHP
    class Calculator implements CoreExtensionInterface {}


    Das CoreExtensionInterface hat keine funktionen und dient nur dafür das ich Plugins vom eigentlichen System trennen kann .


    Anschließend habe ich einen Assetmanager der mir Less und js dateien Kompriemiert und diese nur dann lädt wenn die klasse geladen wird ....



    Wenn ich nun ein Plugin aufrufen möchte würde das in etwa so aussehen


    PHP
    $core = Core::getInstance(); // holt mein system und alle dazugehörigen komponenten (logging, routing etc)
    $core->addExtension('calculator', new Calculator): // Fügt die Calculator Klasse zum Core hinzu
    $calculator = $core->getExtension('calculator');  // Holt die Calculator Klasse
    $calculator->render(/*[Array mit parametern (z.B. Formular informationen)]*/); // zeigt das Plugin an der bestimmten stelle an.


    Das alles ist jetzt vlt. schwer zu verstehen da es doch recht umfangreich ist ... falls das so in etwa das ist was du benötigst meld dich im Skype