Extbase
Da die TYPO3-Programmierung auf Basis der piBase immer undurchsichtiger wird und keine klare Struktur bei der Programmierung zu erkennen ist, haben sich die TYPO3-Entwickler auf die Suche gemacht und überlegt welches System sie in Zukunft für TYPO3 einsetzen können. Man hat sich viele Frameworks angeschaut, aber überall dDefizite gefunden und entschieden ein eigenes Framework aufzubauen und so ist FLOW3 entstanden.
Dieses FLOW3 wird bzw. ist schon die Basis des neuen TYPO3 5, welches derzeit unter dem Namen Phoenix durch die TYPO3-Gemeinde wandert. Da FLOW3 eine völlig neue Basis und auch völlig anders aufgebaut ist, kann FLOW3 nicht von jetzt auf gleich den derzeitigen TYPO3 4.3 Core ersetzten. Damit aber schon heute Extensions auf Basis des neuen Systems programmiert werden können, hat man Teile des FLOW3-Systems als Sysextension für TYPO3 4.3 bereitgestellt. So entstand die Extension extbase. Auf extbase basierende Extensions laufen auf TYPO3-Versionen ab 4.3 und können später mit nur wenig Änderungen auf das TYPO3 5 System portiert werden.
Extbase arbeitet nach dem MVC-Prinzip (Modell, View, Controller). Hier eine erste Einleitung in die einzelnen Begrifflichkeiten:
Das Modell ist die Basis einer jeden Extbaseextension und stellt eine einheitliche Sprache zwischen allen Projektbeteiligten dar. Wenn es z.B. um das Thema "Haus" geht und im Modell hat man sich in Zusammenarbeit mit dem Kunden auf das Wort "Raum" geeinigt, dann sollte auch immer dieses Wort verwendet werden und nicht auf einmal von "Zimmern" geredet werden. Da die deutsche Sprache allerdings geprägt ist mit Ihren Sonderzeichen, die sich nur schwer in die Programmierung einbauen lassen, empfiehlt es sich ein Glossar aufzubauen, in dem alle Modelleigenschaften in die englische Sprache übersetzt werden. Wir werden später beim Erstellen unserer ersten Extbase-Extension noch näher auf das Thema "Modell" eingehen.
Das View kümmert sich um die Ausgabe von Daten. Das kann ein einfaches echo sein, ein Templatesystem wie Smarty oder das eigens entwickelte Fluid. Fluid hat den Vorteil, dass es komplett objektorientiert aufgebaut ist, eine sehr einfache Syntax mitbringt und Dank sogenannter ViewHelpern Kontrollstrukturen enthalten kann, um so z.B. im Template selbst for-Schleifen und if-Anweisungen auszuführen.
Der Controller ist das Mittelteil von dem Modell und dem View. In dem Controller wird entschieden welche Daten aus dem Repository (z.B. Datenbank) geholt werden und an welchen View übergeben werden. Hier finden keine Feldüberprüfungen statt. Hier geht es nur ums Holen von Daten und abgeben von Daten an den View oder wieder zurück ans Repository.
