Development

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

You must first sign up to be able to contribute.

Version 3 (modified by Think, 8 years ago)
Übersetzung und Formatierung (wird fortgesetzt)

Ü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 -Vzeigt ebenfalls den Pfad zum symfony-Installationsverzeichnis, das in config/ProjectConfiguration.class.phpgespeichert 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

One of the first things you might want to do is to configure the database connection for your project. The symfony framework supports all PDO-supported databases (MySQL, PostgreSQL, SQLite, Oracle, MSSQL, ...). On top of PDO, symfony comes bundled with two ORM tools: Propel and Doctrine. Propel is the default one, but switching to Doctrine is quite easy (see the next section for more information).

Configuring the database is as simple as using the configure:database task:

$ php symfony configure:database "mysql:host=localhost;dbname=dbname" root mYsEcret The configure:database task takes three arguments: the PDO DSN, the username, and the password to access the database. If you don't need a password to access your database on the development server, just omit the third argument.

Switching to Doctrine If you decide to use Doctrine instead of Propel, you need to first enable sfDoctrinePlugin and disable sfPropelPlugin. This can be done by changing the following code in your config/ProjectConfiguration.class.php:

public function setup() { $this->enableAllPluginsExcept(array('sfPropelPlugin', 'sfCompat10Plugin')); }After making these changes, launch these commands:

$ php symfony plugin:publish-assets $ php symfony cc $ rm web/sfPropelPlugin $ rm config/propel.ini $ rm config/schema.yml $ rm config/databases.yml Then, run the following command to configure your database for Doctrine:

$ 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