Du hast deinen AdBlocker an?

Es wäre ein Traum, wenn du ihn für t3n.de deaktivierst. Wir zeigen dir gerne, wie das geht. Und natürlich erklären wir dir auch, warum uns das so wichtig ist. Digitales High-five, deine t3n-Redaktion

t3n 31

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

Schreib den ersten Kommentar!

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden