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 8

Ein Tutorial zum Einstieg in das PHP-Framework: Anwendungsentwicklung mit Symfony

    Ein Tutorial zum Einstieg in das PHP-Framework: Anwendungsentwicklung mit Symfony

Symfony ist ein mächtiges Framework für die Entwicklung von Webanwendungen, das viele erprobte Komponenten und Design-Paradigmen der modernen Software-Architektur unterstützt. Das Arbeiten mit Codegenerator, MVC-Schichtmodell und objektrelationalem Mapping ist für viele PHP-Entwickler zuerst ungewohnt. In diesem Tutorial sollen die einzelnen Schritte zu einem ersten Symfony-Projekt beschrieben werden, jedoch nicht ohne gelegentlich tiefer in die Symfony-Strukturen abzutauchen.

Eine Symfony-Anwendung ist ein Projekt, das sich in Applikationen und Module aufteilt. Alle diese Einzelkomponenten lassen sich komfortabel mit dem Symfony-Kommando erzeugen. Eine typische Webanwendung besteht aus einer Frontend- und einer Backend-Applikation, die jeweils diverse Module enthalten können. Um die Architektur des Symfony-Frameworks anschaulich darzustellen, werden wir als Beispielanwendung ein Blog implementieren. Der Einfachheit halber gehen wir hier von der Sandbox-Variante von Symfony [1] aus, in der schon ein Projekt mit einer Frontend-Anwendung vorinstalliert ist. Die Sandbox wird einfach im Webserver-Root-Verzeichnis entpackt. Da wir die Blogeinträge in einer Datenbank ablegen wollen, sollte eine MySQL-Datenbank vorhanden sein. Wir verwenden in diesem Tutorial eine Datenbank mit dem Namen „blog“. Username und Passwort sind ebenfalls „blog“. Die Datenbank legt man entweder über die Kommandozeile oder komfortabel mit phpMyAdmin an.

Das Datenmodell

Basis eines jeden datenbankbasierten Web-Projekts ist ein sauberes Datenmodell. Ein solches relationales Schema erstellt man üblicherweise im Texteditor oder mit einem visuellen Modellierungswerkzeug wie zum Beispiel DBDesigner 4 [2]. Die neben den eigentlichen Relationen im Schema enthaltenen Fremdschlüsselbeziehungen zwischen den Tabellen verwendet Symfony später intelligent in seinem Datenmodell. Das von Symfony genutzte Propel-XML für das DB-Schema ist unabhängig vom verwendeten Datenbanksystem, die erstellte Anwendung kann also problemlos auf jedes unterstützte DBMS portiert werden. Sollte im config-Verzeichnis bereits eine schema.yml-Datei liegen, so ist diese zu löschen, da wir auf die wesentlich komfortablere XML-Schemadatei setzen. Mit einem guten Editor (z. B. Eclipse) kann sie dank vorhandener DTD (liegt bei den Propel-Quellen) mit Code-Completion und Validierung effizient und fehlerfrei erstellt werden.

config/schema.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE database SYSTEM "../lib/symfony/vendor/propel-generator/resources/dtd/database.dtd" >
<database defaultIdMethod="native" name="blog">
  <table name="blog_entry">
    <column name="id" type="INTEGER" primaryKey="true" autoIncrement="true" />
    <column name="title" type="VARCHAR" size="255" required="true" />
    <column name="content" type="VARCHAR" size="2048" />
    <column name="deleted" type="BOOLEAN" default="0" />	
    <column name="created_at" type="TIMESTAMP"/>
    <column name="updated_at" type="TIMESTAMP" />    
  </table>
</database>

Listing 1

Aus diesen Informationen lassen wir den Codegenerator von Symfony nun ein Objektmodell erzeugen. Damit Symfony auch direkt eine Datenbank anlegen kann, muss diese zuerst in den Dateien databases.yml und propel.ini konfiguriert werden. Während in propel.ini die Werte für den ORM-Layer verwaltet werden, regelt die databases.yml den Datenbankzugriff für die eigentliche Symfony-Anwendung. In den meisten Fällen stehen in beiden Dateien die gleichen Parameter.

  • Seite:
  • 1
  • 2
  • 3
  • 4
  • 7

Bitte beachte unsere Community-Richtlinien

Schreib den ersten Kommentar!

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

Jetzt anmelden

Finde einen Job, den du liebst