Entwicklung & Design

Einstieg in TYPO3 Flow: Erste Schritte mit dem PHP-Framework

(Foto: Shutterstock)

TYPO3 Flow eignet sich hervorragend zur Umsetzung komplexer, objektorientierter Software. Anhand einer Autoren-Verwaltung zeigen wir, wie man mit Domain-Driven Design, Kickstarter-Kommandozeilen-Tool, Doctrine-Migrationen und Fluid-Views eine erste eigene Anwendung mit TYPO3 Flow implementieren und betreiben kann.

Als das TYPO3-Entwickler-Team ankündigte, mit TYPO3 Flow (damals noch FLOW3) ein eigenes PHP-Applikations-Framework zu entwickeln, sorgte das für helle Aufregung in der PHP-Gemeinde. Mittlerweile hat sich Flow zu einem eigenständigen Produkt gemausert – auch wenn es ursprünglich nur als Nebenprodukt der CMS-Neuentwicklung TYPO3 Neos entstanden ist.

TYPO3 Flow unterstützt neben Domain-Driven Design moderne Entwurfsprinzipien und Architekturmuster wie die MVC-Architektur oder die aspektorientierte Programmierung. Viele dieser Konzepte stammen – ungewöhnlich für ein PHP-Framework – aus der Java-Welt, vor allem von dem Spring-Framework. Der Artikel zeigt die Entwicklung einer mit Flow realisierten t3n-Autorenverwaltung inklusive Autoren (Author) und Ausgaben (Issue), an denen die jeweiligen Autoren mitgewirkt haben.

Ein möglicher Architekturentwurf für eine einfache Autorenverwaltung.

Ein möglicher Architekturentwurf für eine einfache Autorenverwaltung.

Neues TYPO3-Flow-Projekt einrichten

Da TYPO3 Flow wie Symfony2 und Zend Framework das Paketmanagement-Tool Composer nutzen, lässt sich ein neues TYPO3 Flow-Projekt vergleichsweise einfach aufsetzen. Seit TYPO3 Flow 2.3 wird jedoch PHP in Version 5.5 oder höher vorausgesetzt.

Neues TYPO3-Flow-Projekt mit composer einrichten

$ curl -s https://getcomposer.org/installer | php
sudo mv composer.phar /usr/bin/composer
$ ./composer.phar create-project typo3/flow-base-distribution t3ntest
$ ./flow help

Listing 1

Nach Eingabe des letzten Befehls sollte der Entwickler die Hilfe-Seite des Flow-Kommandozeilen-Tools angezeigt bekommen – das neue Flow-Projekt wurde somit erfolgreich eingerichtet.

Package und Models kickstarten

Alle Quelltexte sind in Flow in Paketen organisiert – also sowohl das Framework, das aus mehreren einzelnen Paketen besteht, als auch der eigene Code. Framework-Pakete werden standardmäßig im Verzeichnis Packages/Framework erwartet, eigene Pakete im Verzeichnis Packages/Application.

Eigene Pakete kann man über den mitgelieferten Kickstarter erstellen, der sich über die Kommandozeile bedienen lässt. Das folgende Listing legt zunächst ein neues, leeres Paket mit dem Namen T3n.Authors an und erstellt dann eine Model-Klasse zur Modellierung eines Autors.

Erstellen des Pakets und der ersten Model-Klasse

$ ./flow package:create T3n.Authors
$ ./flow kickstart:model T3n.Authors Author "name:string"

Listing 2

Die erste Zeile erzeugt ein neues Flow-Paket im Verzeichnis Packages/Application/T3n.Authors. Die zweite Zeile legt eine neue PHP-Klasse mit dem Namen \T3n\Authors\Domain\Model\Author an und speichert sie im Paket unter Classes/T3n/Authors/Domain/Model/Author.php.

Das Beispiel zeigt auch, welchen Konventionen Flow bei der Benennung von Klassen und Dateien folgt: So muss der PHP-Namensraum immer mit dem Paketnamen beginnen. Alle Klassen eines Pakets liegen im Verzeichnis „Classes“ und die Verzeichnisstruktur im Classes-Verzeichnis stimmt mit dem PHP-Namensraum überein. Darüber hinaus liegen Model-Klassen per Konvention immer im Namensraum Domain\Model. Ein Blick in die gerade erstellte PHP-Klasse zeigt den Aufbau der Model-Klassen:

Eine einfache Model-Klasse

<?php 
namespace T3n\Authors\Domain\Model; 

use TYPO3\Flow\Annotations as Flow; 

/** 
 * @Flow\Entity 
 */ 
class Author {
	/**
	 * @var string
	 */
	protected $name;
	
	// [...] weitere Attribute
	
	/**
	 * @return string
	 */
	public function getName() {
		return $this->name;
	}

	// [...] weitere Getter- und Setter-Methoden	

}

Listing 3

Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!