Startseite
Extension-Entwicklung mit Extbase & Fluid

Extension-Entwicklung mit Extbase & Fluid – Teil 1

Click Hier wenn du die Social-Plugins aktivieren willst.

Wir freuen uns, mit diesem Beitrag den Startschuss für eine Artikelserie zum Thema „Extension-Entwicklung auf Basis von Extbase und Fluid Version 6.2″ geben zu können. Anja Leichsenring, Senior Developer bei der typovision GmbH und Active Contributor für TYPO3 CMS, wird in dieser Blogreihe auf die einzelnen Schritte eingehen, die für die Entwicklung einer Extension notwendig sind. Ihr Ziel ist es, Euch ein Manual für die Praxis an die Hand zu geben, so dass Ihr die einzelnen Schritte direkt umsetzen könnt. Die Artikel werden im Abstand von ein bis zwei Wochen erscheinen. Wir wünschen viel Spaß beim Lesen und sind gespannt auf Euer Feedback.

 

Eine Extension entsteht –
Extbase und Fluid im praktischen Einsatz


Wie die Idee zu dieser Blogreihe entstanden ist

TYPO3 CMS 6.2, die zweite Long Term Support Version (LTS), wurde am 25. März 2014 veröffentlicht. Mit vielen Neuerungen an Bord ist sie für die nächsten drei Jahre das Mittel der Wahl, wenn man sich für den Einsatz eines Content Management Systems und unter diesen für TYPO3 CMS entschieden hat. Viele Bestandsprojekte, die jetzt noch unter 4.5 – der ersten LTS – laufen, müssen jetzt auf die neue Version aktualisiert werden.

Bei vorhandenen Extensions stellt sich allerdings die Frage, ob es nicht sinnvoller ist eine neue Version der Extension zu bauen, statt die vorhandene kompatibel zu machen. Auch sollte in die Überlegungen mit einbezogen werden, dass laufend neue Anforderungen entstehen. Zudem bin ich der Meinung, dass man bei der Entwicklung neuer Extensions wirklich nicht mehr mit pi_base arbeiten sollte. Natürlich würde es auch mit pi_base funktionieren – der Compatibility Layer in TYPO3 CMS sorgt dafür – aber das neue MVC-basierende Framework für die Extension-Entwicklung heißt Extbase. In der TYPO3 CMS 4.5 ist Extbase auch schon verfügbar, zusammen mit der Templating Engine Fluid, allerdings hat sich in den letzten drei Jahren, die zwischen den beiden Versionen liegen, viel getan.

In dieser Blogreihe möchte ich auf der Basis von Extbase und Fluid Version 6.2 – also den aktuellen Versionen für TYPO3 CMS 6.2 – die Neuentwicklung einer Extension beschreiben. Eine klassische Aufgabenstellung, wie sie einem Entwickler im Agenturalltag unterkommen könnte.

In der Regel beginnt jedes Projekt mit einer vagen Anforderungsbeschreibung, die an einen herangetragen wird, noch während die Idee reift. Die Implementierung einer ersten Version dieser Anforderungen ist die Folge. Dabei werden immer wieder neue Konzepte aufgegriffen, denn der Kunde kommt jedes Mal mit neuen Ideen auf einen zu, und plötzlich muss man wieder umdenken und mit einem neuen Blick auf die Extension schauen.

Bei der Extension-Entwicklung kommen daher die neuesten Möglichkeiten, die Extbase und Fluid dem Entwickler bieten, zusammen mit der Flexibilität des Domain Driven Design und Best Practices aus drei Jahren Extbase-based Extension Development zum Einsatz.

 

Die Aufgabenstellung

Wenn man als Entwickler neue Konzepte ausprobieren möchte, setzt man sich meiner Erfahrung nach nicht hin und liest Bücher und Blogs und macht sich dann an den Produktiveinsatz. Wahrscheinlicher ist, dass man sich ein fiktives Projekt ausdenkt und dann versucht es umzusetzen. Etwas ohne Zeitdruck, nicht tragisch wenn es scheitert, eine Spielwiese eben. Wenn man ganz viel Glück hat, findet man einen Partner, der das Ergebnis – wenn es denn eins gibt – auch noch verwenden kann. Dankbarkeit ist ein Faktor bei diesen Experimenten, es treibt einen an und gibt Selbstvertrauen.

So wird meine Extension eine Verwaltungsanwendung für die örtliche Bibliothek, die ihre Ausleihen immer noch per Hand auf Karteikarten verwalten. Ob man dafür nun wirklich TYPO3 verwenden muss, ob es ein paar PHP Skripte nicht auch tun würden oder ob die beiden Damen in der Bibliothek mein tolles Programm überhaupt wollen – diese Überlegungen schieben wir alle zur Seite. Es ist ein Spielwiesenprojekt, das vor allem dem Entwickler dienen soll.

 

Die Anforderungsanalyse

Zuerst muss eine Anforderungsanalyse gemacht werden (und keine Angst, ich grabe jetzt weder das Wasserfallmodell zur Projektplanung aus, noch will ich Tonnen von Papier produzieren), damit klar ist was die Extension nachher tun bzw. auch nicht tun soll. Extbase folgt dem MVC Ansatz, unterteilt also seine Funktionalität in Model, View und Controller. Model beschreibt dabei die Domäne, also eine Abbildung der Realität, View die Darstellung und Controller steuert die Businesslogik. Um festzustellen was die Domäne ausmacht, braucht man klare Anforderungen.

Ich denke jeder weiss, wie eine Bibliothek funktioniert, und auf der Grundlage dieses Wissens entstand folgende Sammlung von Aktionen, bei denen unser Programm nachher den beiden Bibliothekarinnen unter die Arme greifen soll:

1. Die Kundenverwaltung
1.1. Leute melden sich in der Bibliothek an, um Dinge auszuleihen
1.2. Leute melden sich auch wieder ab (oder tauchen einfach nie wieder auf)

2. Die Bestandsverwaltung
2.1. Die Bibliothek hat einen bestimmten Bestand an Dingen
2.2. Es kommen Dinge hinzu
2.3. Es werden Dinge entfernt

3. Die Ausleihverwaltung
3.1. Kunden leihen Dinge aus dem Bestand aus
3.2. Kunden bringen Dinge zurück

All diese Aktionen sollen nur von den Bibliothekarinnen durchgeführt werden können, das heißt wir brauchen eine Authentifizierung. Dankenswerterweise haben wir uns schon für den Einsatz von TYPO3 6.2 entschieden, das in seinem Backend alles enthält was wir dafür brauchen. Das ist natürlich auch im Frontend möglich, aber erstmal verlegen wir nun alles ins Backend. Wie das mit Spielwiesenprojekten meistens läuft, wird auch das Frontend bald benutzt werden.

 

Die Datenmodellierung

Aus den Anforderungen können wir nun ein Domänenmodell entwerfen, auf dessen Grundlage die Implementierung nachher beruhen soll. Dies ist der wichtigste Schritt im Domain Driven Design, unterschätzt das nicht und plant genügend Zeit dafür ein. Ein fehlerhaftes, unvollständiges oder falsches Domänenmodell verursacht Bauchschmerzen im mittleren katastrophalen Sektor! Das soll aber nicht heißen, dass alles, was hier einmal festgelegt wurde, in Stein gemeisselt ist und nicht mehr geändert werden kann. Das Gegenteil ist der Fall, mit sich ändernden Anforderungen ändert sich auch das Domänenmodell und damit auch die Implementierung.

Die Modellierung erfolgt nach Lehrbuch möglichst ohne technische Hindernisse für alle Beteiligten am besten auf Papier. Ein erster Entwurf könnte aussehen wie folgende Abbildung:

Datenmodellierung für die digitale Verwaltung der Bibliothebestände

Datenmodellierung für die Verwaltung der Bibliotheksbestände

Die Dinge aus der Anforderungsanalyse werden hier zunächst grob als Buch und Tonträger definiert, und die Erfahrung lehrt uns, dass sie zum überwiegenden Teil die gleichen Eigenschaften (Properties) haben, weshalb sie eine Oberklasse Bestandsobjekt bekommen haben und von dieser erben. Der Bibliotheksbestand besteht nun aus vielen Büchern, Tonträgern und auch Kunden. Alle werden technisch über eine 1:n Relation abgebildet.
Damit kann man anfangen zu arbeiten. Es ist also Zeit die beiden Bibliothekarinnen zurück an ihre Arbeit zu schicken, eine Pizza zu bestellen und die  Kellertür zu schliessen: developer time!

Weiter geht es im nächsten Artikel mit dem Grundgerüst und der Datenbank.

7 Gedanken zu “Extension-Entwicklung mit Extbase & Fluid – Teil 1

  1. Guter Start. Ich hoffe es geht in gleicher Qualität weiter, denn der Mangel an aktueller Dokumentation(-> doc.typo3.org) wird die Akzeptanz von 6.2LTS gerade in der Startphase bremsen.

    Ein kleiner Fehler: „wurde am 23. Mai 2014 veröffentlich“ hier muss es 25. März lauten

    Kommentar
    1. Sabine Mayr sabine

      Vielen Dank – das ist auf jeden Fall das Ziel. Und den Fehler haben wir bereits korrigiert. Danke für den Hinweis!

      Kommentar
  2. Super Idee. Bin gespannt. Genau so habe ich auch mit meiner ersten Extension angefangen – mit pi_base kenne ich mich gar nicht aus.. Habe aber auch noch einige ungelöste Probleme.

    Kommentar
  3. Carsten Kettner

    *thumbs up*
    Und weiter geht’s mit Teil 2 …

    Kommentar
  4. Wo finde ich denn die anderen Teile???

    Kommentar
    1. Sabine Mayr sabine

      Hi Peter, ich kopier Dir hier mal den Link zum vorerst letzten Teil der Reihe, Nummer 8. Hier findest Du ganz unten eine Auflistung aller Beiträge inklusive eine Linkliste: http://www.typoblog.de/teil-8-ein-dashboard-fuers-backend/

      Kommentar
  5. Wau das ist eine schöne Blogseite und ich freue mich gerade darauf diese Blogreihe hier weiter zu lesen.

    Kommentar

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>