Entwicklung & Design

Erste Schritte mit dem neuen PHP-Framework: Einstieg in FLOW3

Seite 8 / 9

Persistenz

Das sicherlich am sehnlichsten erwartete FLOW3-Feature ist das Persistenz-Framework und das dazugehörige Content Repository. Denn erst nach dessen Fertigstellung wird es möglich sein, auf einfache Art und Weise Daten zu speichern und wieder aufzurufen. Doch wie kommt man an seine Daten, wenn es kein SQL mehr gibt? Die Antwort lautet: gar nicht. Die Daten kommen zu Ihnen.

FLOW3 bietet eine besondere Unterstützung für das Domain-Driven-Design an (siehe T3N Nr. 11), die es dem Entwickler ermöglicht, sich voll auf die Domäne, also die Geschäftslogik, zu konzentrieren. Ein FLOW3-Entwickler denkt und entwickelt daher mit Objekten anstatt mit Datenbanktabellen – sicherlich kein leichter Umstieg, aber ein lohnenswerter. Nehmen wir das Beispiel eines Blog-Eintrags. Eine PHP-Klasse, die einen Blog-Eintrag repräsentiert, könnte in etwa so aussehen:

PHP
/**
 * @entity
 */
class F3_Blog_Domain_Post {
	/**
	 * @var string
	 */
	protected $title;

	/**
	 * @var DateTime
	 */
	protected $date;

	/**
	 * @var array
	 * @reference
	 */
	protected $tags = array();

	/**
	 * Setter for title
	 *
	 * @param string $title
	 * @return void
	 */
	public function setTitle($title) {
		$this->title = $title;
	}

	/**
	 * Adds a tag to the post
	 * @param F3_Blog_Domain_Tag $tag 
	 * @return void
	 */
	public function addTag(F3_Blog_Domain_Tag $tag) {
		$this->tags[] = $tag;
	}
?>

Listing 6

Natürlich wird es noch weitere Setter- und Getter-Methoden geben und weitere Funktionen wie etwa „publish()“, die es erlauben, einen Blog-Eintrag zu publizieren. Laut Domain-Driven-Design sammeln wir unsere Blog-Einträge in einer Blog-Eintrag-Aufbewahrung – denn nichts anderes ist unser PostRepository:

PHP
/**
 * @repository
 */
class F3_Blog_Domain_PostRepository {

	/**
	 * @var array
	 * @reference
	 */
	protected $posts = array();

	public function add(F3_Blog_Domain_Post $post) {
		$this->posts[] = $post;
	}
	public function remove($post) { ... }
	public function findByDate($date) { ... }
	...
}

Listing 7

Dieses Repository dient dazu, Blog-Einträge später wiederzufinden – zu diesem Zweck gibt es entsprechende „find*()“-Methoden, die die Posts nach einem bestimmten Kriterium zurückliefern.

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!

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung