Extension-Entwicklung mit Extbase (Teil 2)

Das Grundgerüst: Extension-Entwicklung mit Extbase

Ab Typo3 6.2 schwirren einige Begriffe durch die Luft des Webentwicklers: Extbase, Domain, Model, View, Controller, Fluid, usw. Hier ist nicht von irgendwelchen Grundzügen des Programmierens die Rede, sondern das hier ist Programmieren 2.0. Wer die Grundlagen des Codings und Objektorientierte Programmierung nicht verstanden hat, dem wird Extbase mit Fluid mehr als ein großes Fragezeichen sein.

In diesem zweiten Teil geht die Typo3 Entwicklung nämlich in eine neue Runde. Dieser baut auf dem ersten Teil auf. Wir empfehlen auch diesen sozusagen als Vorspeise zu lesen.

Vorbereitung: Werkzeuge für Typo3 in Kombination mit Extbase/Fluid

Die richtig Hartgesottenen programmieren natürlich in einem dunklen Terminalfenster in vi. Wer jetzt aber auf weniger Schmerzen steht, kann (wie jeder andere normale Entwickler auf dieser Erde) eine komfortable Entwicklungsumgebung benutzen. Das ist dann im Vergleich zu vim der Mercedes unter den Produktivitätstools. Wir empfehlen an dieser Stelle alternativlos PHP Storm. Diese IDE ist erweiterbar und macht einem Extbase-Entwickler das Leben mehr als einfacher. Neben gewöhnlichem Syntax-Highlighting denkt dieser intelligente Schraubenschlüssel nämlich mit: Er weiß nicht nur, welche Größe die Schraube hat, in welche Richtung gedreht werden muss und warum überhaupt. Ich übersetze in kurz: PHP Storm hat erweitertes Intellitext. Nicht nur, dass es die Befehle in der aktuellen Datei erkennen kann, sondern auch in dem ganzen Projekt und auch inklusive aller Dateien im MVC. Man kann damit natürlich auch TypoScript bearbeiten und das mit buntestem Syntax-Hightlighting. Was hat Extbase noch zu bieten? Ach ja, Fluid-Templates, die Sprachdateien (xlf-Formate) und vieles, vieles mehr. Zwar kostet PHPStorm ein bisschen Bares, ist das Geld aber mehr als wert. Wir haben Alternativen getestet, doch diese konnten uns nicht überzeugen.

How to create Extbase extensions: So geht das

Natürlich sollte unser Typo3 nicht nur flüssig laufen, sondern auch unser Wissen bezüglich PHPStorm geölt sein. Wer mit der IDE gut umgehen kann und einige Tastenkombinationen beherrscht, der wird sehr schnell an sein Ziel kommen: Die erste Typo3-Extbase-Extension. Und das ist vielleicht im ersten Schritt nicht mal so kompliziert. Typo3 erleichtert hier mit einer kleinen aber feinen Extension die Initialarbeit. Der selbsterklärende Name Extension Builder wird ganz entspannt über den Extension Manager installiert und wartet dann im linken Menü auf seinen fleißigen Einsatz. Empfehlenswert ist es, hier immer die neueste Version zu installieren, um eventuelle Bugs zu vermeiden. Ja, und was macht der Extension Builder genau? Wir haben ja aus guten Quellen erfahren, dass eine Extbase-Extension aus mehreren Teilen besteht.

Zum Einen ist da das Model, also das Datenmodell, die Datenstruktur. Und genau diese kann uns der Extension Builder helfen aufzubauen. Er macht sich an die Arbeit und erstellt in fleißigster Kleinarbeit nicht nur die Datenbankstruktur (ähnlich wie in pibase) sondern auch die Schnittstelle zwischen den Daten und der Datenlogik. Hier entstehen dann Repositories, also Klassen, die einzelne Datensätze ausliefern, je nach dem wie man sie gefiltert haben möchte. Und die jeweiligen Datenobjekte mit ihren Eigenschaften. Und hier liegt die meiste Arbeit: Diese Klassen haben nämlich für jede Klasse, dort für jedes Attribut sogenannte Getter und Setter. Auch dieser fast selbserklärende Name beschreibt ganz gut, was diese denn tun: sie holen und setzen Eigenschaften des Objekts. Aber warum denn so kompliziert? Darum: Alles, was über eine Methode gesetzt wird, kann vor dem Speichern in die Datenbank manipuliert werden. Das Gleiche gilt für den anderen Teil: Wenn Typo3 mit Extbase aus der Datenbank Datensätze liest, können einzelne Attribute abgewandelt, überprüft und hier anschließend auch wieder angepasst werden, bevor sie dem einzelnen Objekt zugewiesen werden. Mit diesem Objekt geht es dann natürlich weiter. Wie auf einem Fließband wird es in der Programmlogik weitergereicht: Vom Model in den View, vom View dann in den Controller — eben MVC. Im View wird dann festgelegt, wie die Ansicht des Objekts im Backend oder im Frontend aussieht. Schließlich soll es ja eine schöne Website werden und nicht Augenschmerzen verursachen, wenn man länger als fünf Sekunden verweilt. Die Datenein- und -ausgabe geschieht hier aber auch nicht ungefiltert: Man kann mit dem Controller kontrollieren (was für ein glücklicher Zufall, dass auch hier die Begriffe selbstsprechend sind), wie die Daten verarbeitet werden.

Extbase-Entwicklung: Ganz andere Welt

Genial an der Entwicklung mit Extbase ist, dass man hier die Ebenen teilt, die tatsächlich auch nicht zusammengemischt werden dürfen:

  • Die Daten in der Datenbank (Datenhaltungsschicht),
  • die Verarbeitung der Daten (Logistikschicht),
  • und die Datenausgabe (die Präsentationsschicht).

Somit hat man es selbst bei sehr großen Projekten einfacher, den Überblick über den Code zu behalten. Und damit bleibt die Erweiterung natürlich wartbar und der nächste Entwicklerkollege wird nicht fluchend auf die Tastatur schlagen, weil dieses Prinzip eingehalten werden muss — denn ansonsten wäre es keine echte Extbase-Extension geworden.

Titelbild: By malenki (Own work) [CC BY-SA 3.0], via Wikimedia Commons