Doctrine 2 – Sebastians Blog https://sgaul.de Neues aus den Softwareminen Thu, 13 Mar 2014 20:34:54 +0000 de-DE hourly 1 https://wordpress.org/?v=6.1.7 https://sgaul.de/wp-content/uploads/2019/02/cropped-sgaul-2-1-32x32.jpg Doctrine 2 – Sebastians Blog https://sgaul.de 32 32 MVC-Anwendungen mit Flow 3 und ein Ausblick auf das nächste Typo 3 https://sgaul.de/2011/10/09/mvc-anwendungen-mit-flow-3-und-ein-ausblick-auf-das-nachste-typo-3/ Sun, 09 Oct 2011 17:31:15 +0000 https://sgaul.de/?p=567 Auf der gerade tagenden „T3CON11“ kommen die Typo-3-Entwickler zusammen und beraten über die Zukunft. Nebenbei zeigen Sie aber auch, was sie schon haben. Nachdem ich in den letzten Monaten doch eher negative Eindrücke von Typo 3 sammeln musste, machen das grundlegende Framework Flow 3 und die ersten Bilder von Typo 3 5 einen sehr guten Eindruck.

Model, View und Controller mit Flow 3

Das MVC-Framework Flow 3 soll noch im Oktober diesen Jahres erscheinen. Ich habe daher mal einen kurzen Blick darauf geworfen und bin über einige tolle Sachen gestolpert, die ich sehr überzeugend finde.

Kommandozeile

In Flow 3 erzeugt man Webapplikationen weitgehend über die Kommandozeile. Die nötigen Dateistrukturen und wesentliche Inhalte von Controllern, Models, Repositorys und Templates werden bereits erzeugt und müssen lediglich angepasst werden. So erzeugt man für einen Blogpost beispielsweise ein recht einfaches Grundgerüst, indem man

./flow3 kickstart:actioncontroller
  --generate-actions
  --generate-related
  TYPO3.Blog Post

im Projektverzeichnis ausführt. Dies erzeugt einen neuen Controller „PostController“ (ein Actioncontroller ist den Zugriff durch den Browser; man kann auch Commandcontoller für die Kommandozeile erstellen). Hierbei werden gleich wesentliche Aktionen wie Hinzufügen und ändern erzeugt (–generate-actions). Die Option –generate-related erzeugt automatisch alles, was noch fehlt: Dies ist hier ggf. das Paket TYPO3.Blog (vorletzter Paramter) und das Model Post, welches passend zum Controller existieren muss. Der letzte Parameter benennt den Controller (ohne das Suffix Controller) und impliziert eine Verbindung zu einem entsprechenden Model.

All das nimmt einem sehr viel Dateiverwaltung und Code-Erzeugung ab. Einen weiteren schönen Einblick in die Kommandozeilenfähigkeiten bekommt man durch das folgende Video:

[vimeo clip_id=“28987131″]

Persistenz an Bord

Eine weitere schöne Sache ist die Verwendung von Doctrine 2: Statt sich hier etwas neues zu überlegen, setzt man auf diese bewährte Lösung, um Objekte ohne viel Aufwand auf Datenbanken zu mappen. Hierfür ist etwas mehr Aufwand im Model nötig. Alle Attribute müssen mittels PHP-Doc typisiert werden:

/**
 * The name
 * @var string
 */
protected $name;

Anschließend kann man diese Models aber mittels eines einfachen Kommandozeilenaufrufs in der Datenbank erzeugen

./flow3 doctrine:migrate

oder später nach Änderungen aktualisieren:

./flow3 doctrine:update

Doctrine ist mittlerweile sehr gut erprobt und bietet unzählige Möglichkeiten.

Wirkt überzeugend – aber was ist mit der Performance?

Was ich bisher gesehen habe, finde ich absolut intuitiv und auch einfacher, als ich es von anderen Frameworks kenne.

Das einzige, wovor ich auf lange Sicht doch ein wenig Angst habe, ist, dass die Entwickler die Performance ähnlich wie bei bisherigen Typo-3-Entwicklungen zu weit hinten anstellen. Schon hier auf dem eigenen Rechner dauerte es manchmal doch erschreckend lange, bis eine Seite vollständig erzeugt wurde. Allerdings war dies meist nur beim ersten Aufruf zu beobachten. Ich denke daher, dass Caching hier über die Geschwindigkeitsprobleme hinweg helfen soll.

Wer selber sehen möchte, was Flow 3 kann, dem sei das Quick-Start-Tutorial ans Herz gelegt.

Typo 3 5

Das neue Typo 3 wird wohl erst Ende nächsten Jahres erscheinen, dennoch zeigte T3N.de in einem Artikel mit Video ein paar schöne erste Eindrücke (das Interview davor ist… merkwürdig, aber wenigstens kurz):

[youtube clip_id=“ihOVcmo6OOI“]

Das Flow-3-Logo stammt von http://flow3.typo3.org/ und ist Eigentum der Typo-3-Association.
5Y593YT8QPDQ
]]>