Der erste Schritt für’s Fukurama ist getan. Eine erste Version der Controllerconfig ist zusammengezimmert. Es gibt noh viel zu klären und zu definieren und es ist auch noch keine Zeile Code geschrieben, aber es ist immerhin ein Anfang.
Die Struktur ist aus dem Grund so gewählt, weil ein Controller, wenn man ihn von allen unnötigen Aufgaben befreit, nichts weiter macht, als Parameter entgegenzunehmen und aufgrund dieser die eine oder ander Funktion auszuführen und am Ende zu entscheiden, was angezeigt oder wohin umgeleitet werden soll. Da das meiner Erfahrung nach immer gleich aussieht, muss man dafür eigentlich keine einzige Zeile Code schreiben, da reicht die Konfig.
Ein weiterer Grund ist die Tatsache, dass es nicht ganz einfach ist, aus bestehenden, einzelnen Controllerfunktionen einen Workflow abzubilden. Durch die ausschließliche Definition über die Konfig und die dortige Verschachtelung ist alles als Workflow definiert und kann beliebig verschachtelt werden (oder auch nicht).
Und noch ein meiner Meinung nach wichtiger Grund ist die strikte Einhaltung der Definition. Wenn man definiert, dass eine Funktion z.B. einen Parameter benötigt und das so auch dokumentiert, kann automatisch geprüft werden, ob alle Links zu dieser Funktion in der Anwendung auch diesen Parameter angeben.
Außerdem wichtig ist, dass jedes Plugin definieren muss, wie es mit anderen Plugins zusammen hängt. Gar nicht, es leitet nur weiter, es benutzt die öffentliche Schnittstelle oder es wurschtelt in Interna rum.
Als ltztes noch die Möglichkeit, alle Grundlegenden Funktionen von Plugins hinter einem key zu verstecken. Somit kann an ein Plugin, dass alle Funktionen, wie z.B. Editieren, als Popup öffnet, durch eines ersetzt werden, dass per Ajax Layer über die alte Funktion legt oder immer die Ganze seite weiterleitet oder, oder oder.Man muss eben nur jede Verantwortlihkeit ordentlich Kapseln.
Mein erstes Bedenken ist, dass eben einfach alles als Plugin erstellt wird und der Programmcode dadurch wieder unübersichtlich wird. Aber das kann nur ein Praxistest bestätigen oder wiederlegen.
Wie gesagt, es ist ein erster Versuch, aber mit dieser Vorgabe werde ich mal versuchen, einen Controller zum laufen zu kriegen. Mal sehen, was sich daraus ergibt.