Angezeigte Seite:  Technologisches / typo3 MotoGo Lib

MotoGo Lib ein Framework-plugin für typo3

MotoGo Lib ist ein Model, View und Control (kurz MVC) Framework, das auf klassische typo3 Basisfunktionen aufsetzt. Mit Hilfe des Frameworks lassen sich ohne unnötige individuelle Programmierung einfach und schnell beliebige (Datenverwaltungs-)Plugins für typo3 aufsetzen.

Insb. immer wiederkehrende Funktionen wurden in dem Framework gebündelt und stehen damit fertig und sofort nutzbar zur Verfügung. Egal ob Listen, Eingabemasken zu generieren, Entitäten zu kopieren, Excel Listen zu erzeugen oder Lese-, Bearbeitungsberechtigungen auf Attribute oder Funktionen zu setzen sind. Letztlich stellt das Framework durch seine klare Architektur einen sauberen Implementierungsrahmen bereit und verhindert damit einen Wildwuchs direkt vom ersten Tag an.

Architekturübersicht

Einfache Entitätsdefinitionen sind die Basis und stellen das Model vom MVC dar. Hier werden Datenfelder und ihre Eigenschaften/ Möglichkeiten beschrieben. Diese Definition setzt im Fortgang das der Entität entsprechende Potential auf Basis des Frameworks frei. In welcher Tabelle steht die Entität? Welche Funktionen unterstützt sie? Kann die Entität kopiert werden? Soll eine Funktion nur für Admins bearbeitbar sein? Welche Datenfelder hat die Entität? Welcher Datentyp wird für ein Feld verwendet? Soll das individuelle Feld in eine Excel exportierbar sein? Wer kann auf das Feld lesend, bearbeitend etc. zugreifen? Soll das Feld in einer Listenanzeige erscheinen? Und wenn, wie? All diese und natürlich weitere Eigenschaften werden in der Entitätsdefinition einmalig hinterlegt.

Die Entitätsdefinition ist das Herz eines EntityProviders. Der Provider interpretiert die Definition und stellt auf dieser Basis alle Create, Read, Update und Delete (kurz: CRUD) Funktionen der Datenbank (kurz: DB) in einem einfach zu bedienenden Programmier-Interface zur Verfügung. Zusätzlich bietet er Datenfeldnachbearbeitungs- wie auch Datenfeldvalidierungsfunktionen. Er kann eigenständig über Relationen navigieren und weiß mit Auswahl-, File-, Bild- und z.B. Datumsobjekten umzugehen. EntityProvider können voneinander erben. So lässt sich auch – falls notwendig – z.B. eine beliebige polymorphe Datenstruktur abbilden.

Parallel zur Entitätsdefinition ist ein ggf. rein generischer Entitätsrenderer definiert. Er stellt den View vom MVC dar. Der Renderer kapselt alle Masken- oder Listengenerierungsfunktionalitäten. Das Framework bietet allemal generische Masken- oder Listenlösungen, welche aus der hinterlegten Entitätsdefinition abgeleitet werden. Sprich, durch einfache Anpassung der Definition wird sofort auch der View angepasst.

Alternativ können aber auch statische Templates genutzt werden, in welche die generierten Datenfelder letztlich „nur“ eingefügt werden. Wem dies nicht genügt, der kann natürlich in einem Renderer beliebige eigene (auf die generischen Funktionen aufsetzende) Rendering-Funktionen ausimplementieren und letztlich dem Enitätskontroller zur Verfügung stellen.

Anmerkung: Schaut man genau hin, so stellt man fest, dass ein Entitätsrenderer in kleinere Teilrenderer zerfällt. Durch Ersatz dieser Teilrenderer kann ein generischer Renderer schnell den eigenen Bedürfnissen entsprechend angepasst werden. Häufig muss man nur einen Teilrenderer neu implementieren.

Ein Entitätskontroller enthält mind. einen EntityProvider sowie den korrespondierenden Entitätsrenderer. Er stellt das Control vom MVC dar. Neben der eigentlichen Entitätsbindung hat er zusätzlich – falls notwendig – über einen Data Access Layer (kurz: DAL) auch Zugriff auf alle weiteren im Plugin definierten Entitätsprovider. Genauso hat er aber auch über einen MainController Zugriff auf alle weiteren parallel stehenden Entitätskontroller, welche im Plugin definiert wurden.

Anmerkung: Das Framework bietet neben Entitätskontroller auch eigene Systemkontroller, welche z.B. zum E-Mail Versand genutzt werden können. Es bietet auch eigene SystemRenderer, welche z.B. zur Generierung von EXCEL Listen genutzt werden können.

Der Entitätskontroller ist der Ort in dem alle entitätseigenen Funktionalitäten implementiert werden. Über das Framework erhält er viele schon nutzbare Basisfunktionen. So stehen ganze Editiermaskenfunktionen, Listendarstellungsfunktionen etc. zur Verfügung. Eine nette Zusatzeigenschaft ist, dass aus einem Kontroller auf alle parallel stehende MotoGo Plugins zugegriffen werden kann. Damit werden auch deren im Modulinterface bereit gestellten Funktionen für einen Kontroller nutzbar.

Im Abschluss bietet die MotoGo Lib einen einfachen Plugin-Rahmen, der insb. den Plugin-MainController instanziiert und typo3 Plugin-Modes an die entsprechenden Kontroller delegiert. Auch dieser Rahmen wird über das Framework unterstützt. Durch Vererbung einer Default-Plugin Klasse wird dem Entwickler nur das Nötigste abverlangt. Eine einheitliche Verzeichnisstruktur macht es leicht, die noch notwendigen Plugin Files für typo3 selber anzupassen.

Das Framework wurde erstmalig im Kontext einer Implementierung eines Buchungssystems erfolgreich eingesetzt. Dabei zeigte sich, dass Implementierungsaufwände immens reduziert werden konnten. Genauso wurde nachweislich durch den Einsatz die Qualität einer Implementierung massiv gesteigert, da Fehler entweder überall auftreten oder erst gar nicht. ;)

Lassen Sie auch Ihr neues typo3 Plugin bzw. ihre gesamte WEB-basierte Anwendung von uns auf dieser Basis implementieren.

Mein Profil

Ich bin seit 1999 im Java Umfeld tätiger Web-Entwickler. Von der JDK 1.1 kommend, habe ich die Entwicklung bis zur heutigen JSE 7.0 im industriellen Umfeld miterlebt.

Parallel hat mich das Potential von Typo3 fasziniert. Von der Version 3.8 kommend, habe ich die Entwicklung bis zur heutigen 6.2. mitvollzogen. Dabei hat mich zusehends immer mehr PHP als Sprache mit idealem WEB Charakter begeistert.

Android oder iOS schlägt nun die Brücke zwischen den beiden Welten und eröffnet dabei ganz neue Möglichkeiten.

Als zertifizierter SPiCE Provisional Assessor (ISO 15504) lege ich im Rahmen der Entwicklung sehr viel Wert auf qualitativ hochwertige Ergebnisse.