Development

Documentation/de_DE/getting_started/1_2/05-Project-Setup

You must first sign up to be able to contribute.

Version 4 (modified by Think, 8 years ago)
Übersetzung und Formatierung

Übersetzung von Getting Started with symfony

Der Start mit symfony

Projekt einrichten

In symfony werden die Anwendungen, die auf dasselbe Datenmodell zugreifen, innerhalb von Projekten gruppiert. Bei den meisten Projekten werden Sie zwei verschiedene Anwendungen haben: ein Frontend und ein Backend.

Projekt erstellen

Vom Verzeichnis sfproject/ aus starten Sie den symfony-Task generate:project um das eigentliche symfony-Projekt zu erstellen.


$ php lib/vendor/symfony/data/bin/symfony generate:project PROJECT_NAME


Mit Windows:


c:\> php lib\vendor\symfony\data\bin\symfony generate:project PROJECT_NAME


Der generate:project-Task erstellt die Standard-Struktur aus Verzeichnissen und Dateien, die ein symfony-Projekt braucht.

VerzeichnisBeschreibung
apps/Enthält alle Anwendungen des Projekts
cache/Die Dateien, die vom Framework gecached werden
config/Die Dateien der Projekt-Konfiguration
lib/Die Projekt-Bibliotheken und -Klassen
log/Die Log-Dateien des Frameworks
plugins/Die installierten Plugins
test/Die Dateien der Element-Tests und Funktions-Tests
web/Das Webroot-Verzeichnis (s. unten)


Anmerkung: Warum generiert symfony so viele Dateien? Einer der Hauptvorteile der Verwendung eines voll ausgestatteten Frameworks besteht in der Standardisierung Ihrer Entwicklungen. Dank symfonys Standardstruktur aus Dateien und Verzeichnissen kann jeder Entwickler mit etwas symfony-Kenntnissen die Pflege eines symfony-Projekts übernehmen. Innerhalb von Minuten wird es ihm möglich sein, in den Code einzutauchen, Fehler zu beheben und neue Features hinzuzufügen.


Der generate:project-Task hat ebenfalls in Ihrem Projekt-Hauptverzeichnis eine Abkürzung erstellt, damit Sie nicht so viele Zeichen eintippen müssen, um einen symfony-Task zu starten.

Von jetzt an also können Sie statt des vollständigen Pfades zum symfony-Programm die symfony-Abkürzung verwenden.

Anwendung erstellen

Nun erstellen Sie die Frontend-Anwendung durch starten des Tasks generate:app:


$ php symfony generate:app --escaping-strategy=on --csrf-secret=UniqueSecret frontend



Tipp: Da die symfony-Abkürzung eine ausführbare Datei ist, können alle Unix-Anwender von jetzt an statt 'php symfony' './symfony' eingeben.
Bei Windows können Sie die Datei 'symfony.bat' in Ihr Projekt kopieren und 'symfony' statt 'php symfony' verwenden:
c:\> copy lib\vendor\symfony\data\bin\symfony.bat .


Abhängig vom Anwendungsnamen, der als Argument angegeben wurde, erzeugt der Task generate:app die für die Anwendung notwendige Standard-Verzeichnisstruktur innerhalb der Verzeichnisses apps/frontend/:

VerzeichnisBeschreibung
config/Die Dateien der Anwendungs-Konfiguration
lib/Die Bibliotheken und Klassen der Anwendung
modules/Der Code der Anwendung (MVC)
templates/Die globalen Template-Dateien


Tipp: Beim Aufruf des Tasks generate:app haben Sie ebenfalls zwei sicherheitsrelevante Optionen mitgegeben:

  • --escaping-strategy: Aktiviert das Output-Escaping zur Verhütung von XSS-Attacken
  • --csrf-secret: Aktiviert Session-Tokens zur Verhütung von CSRF-Attacken

Durch Angabe dieser beiden optionalen Argumente an den Task haben Sie Ihre zukünftige Entwicklung gegen die zwei am meisten verbreiteten Schwachstellen im Web abgesichert. Das ist richtig, symfony übernimmt für Sie automatisch Sicherheitsmaßnahmen.

Sollten Sie nichts über XSS oder CSRF wissen, dann nehmen Sie sich die Zeit, mehr über diese Sicherheits-Schwachstellen zu lernen.


Verzeichnisstruktur-Rechte

Bevor Sie auf Ihr neu erstelltes Projekt zugreifen müssen Sie die Schreibrechte für die Verzeichnisse cache/ und log/ auf die geeignete Stufe setzen, damit der Webserver darauf schreiben kann:


$ chmod 777 cache/ log/



Tipp für Leute, die ein SCM-Tool (Software Configuration Management) verwenden:
Symfony schreibt überhaupt nur in zwei Verzeichnisse eines symfony-Projektes, cache/ und log/. Der Inhalt dieser Verzeichnisse sollte von Ihrem SCM ignoriert werden. (Wenn Sie z.B. Subversion verwenden durch Anpassen der svn:ignore-Eigenschaft.)


Der symfony-Pfad

Sie erhalten die symfony-Version, die Ihr Projekt verwendet, durch Eingabe von:


$ php symfony -V


Die Option -V zeigt ebenfalls den Pfad zum symfony-Installationsverzeichnis, das in config/ProjectConfiguration.class.php gespeichert ist:


// config/ProjectConfiguration.class.php
require_once '/Users/fabien/work/symfony/dev/1.2/lib/autoload/sfCoreAutoload.class.php';


Für eine bessere Portabilität wechseln Sie die absolute Pfadangabe zur symfony-Installation in eine relative:


// config/ProjectConfiguration.class.php
require_once dirname(__FILE__).'/../lib/vendor/symfony/lib/autoload/sfCoreAutoload.class.php';


Auf diese Weise können Sie das Projektverzeichnis überall auf Ihrem Rechner oder auf einen anderen verschieben und alles wird weiterhin funktionieren.

Die Datenbank konfigurieren

Eines der ersten Dinge, die Sie tun können ist die Anpassung der Datenbank-Verbindung für Ihr Projekt. Das symfony-Framework unterstützt alle Datenbanken, die PDO unterstützen (MySQL, PostgreSQL, SQLite, Oracle, MSSQL, ...). Symfony vefügt über zwei ORM-Tools, die auf PDO aufsetzen: Propel und Doctrine. Propel ist das Standard-Tool, das Umschalten auf Doctrine ist aber recht einfach (s. nächster Abschnitt für mehr Informationen).

Die Konfiguration der Datenbank erfolgt ganz einfach mit dem Task configure:database:


$ php symfony configure:database "mysql:host=localhost;dbname=dbname" root mYsEcret


Der configure:database-Task erhält drei Argumente: die PDO DSN, den Usernamen und das Passwort zum Zugang zur Datenbank. Wenn Sie auf Ihrem Entwicklungs-Server kein Zugangs-Passwort zur Datenbank brauchen, lassen Sie das dritte Argument weg.

Auf Doctrine umschalten

Sollten Sie sich entschließen, Doctrine statt Propel zu verwenden, müssen Sie zuerst sfDoctrinePlugin einschalten und sfPropelPlugin abschalten. Sie erreichen dies durch diesen Code in Ihrer config/ProjectConfiguration.class.php:


[PHP]
 public function setup()
 {
   $this->enableAllPluginsExcept(array('sfPropelPlugin', 'sfCompat10Plugin'));
 }

Nach dieser Änderung führen Sie diese Kommandos aus:


$ php symfony plugin:publish-assets
$ php symfony cc
$ rm web/sfPropelPlugin
$ rm config/propel.ini
$ rm config/schema.yml
$ rm config/databases.yml


Anschließend starten Sie dieses Kommando, um Ihre Datenbank für Doctrine zu konfigurieren:


$ php symfony configure:database --name=doctrine --class=sfDoctrineDatabase "mysql:host=localhost;dbname=jobeet" root mYsEcret


zurück zu: Übersicht "Der Start mit symfony"
zurück zu: Deutsche Startseite