Caution: You are browsing the legacy symfony 1.x part of this website.

Wie man die voreingestellte Verzeichnisstruktur individuell anpasst

Eins der großen Vorteile des Frameworks ist, die gleich bleibende Struktur die über Ihren Projekten gegeben ist. Alle Projekte verwenden den gleichen Coding-Standard sowie die gleiche Verzeichnisstruktur. Diese Struktur ermöglicht es das mehrere Entwickler an dem selben Projekt gleichzeitig arbeiten können. Aber es erhöht auch die Wartbarkeit der entwickelten Anwendungen. Wenn Sie jemand fragen würde, ein symfony Projekt, woran Sie bis dato nicht entwickelt haben, zu betreuen, wissen Sie, wo alle Dateien abgelegt sind und Sie können sofort mit der Enticklung beginnen.

Jedoch müssen Sie manchmal in der Lage sein, die Verzeichnisstruktur, die von symfony bereitgestellt wird, individuell anpassen. Lassen Sie uns das an anhand zwei sehr unterschiedlichen Beispielen aufzeigen.

Sagen wir mal Ihr symfony-Project iwr auf eine Shared-Host gehostet, wo die das web-root-Verzeichnis public_html lautet. Durch das bearbeiten der ProjectConfiguration-Klasse, ist es sehr einfach, wie weiter unten gezeigt wird, das voreingestellte web-root-Verzeichnis von web auf public_html anzupassen:

// config/ProjectConfiguration.class.php
class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->setWebDir($this->getRootDir().'/../public_html');
  }
}

Lassen Sie uns ein anderes Beispiel nehmen. Ihr symfony-Projekt wird nun bei einem sehr großen Unternehmen, mit strikten Struktur-Richtlinien, gehostet. Sie erlauben Ihrer Anweundung nicht, bis auf einigen spezifizierten Verzeichnissen (/tmp zum Beispiel), auf der Festplatte zu schreiben. Da symfony, nur in zwei Verzeichnissen schreibt (cache und log), ist es sehr einfach die ProjectConfiguration-Klasse anzupassen, um diese Verzeichnisse auf /tmp zu verschieben:

// config/ProjectConfiguration.class.php
class ProjectConfiguration extends sfProjectConfiguration
{
  public function setup()
  {
    $this->setCacheDir('/tmp/myproject/cache');
    $this->setLogDir('/tmp/myproject/log');
  }
}

Die Methode setCacheDir() ändert nicht nur die Konstante sf_cache_dir, sondern alle Cache-bezogene Konstanten: sf_app_base_cache_dir, sf_app_cache_dir, sf_template_cache_dir, sf_i18n_cache_dir, sf_config_cache_dir, sf_test_cache_dir und sf_module_cache_dir.

Und zu guter Letzt, da die Konfigurationsklassen ebenfalls von symfony CLI verwendet werden, sind alle diese angepassten Einstellungen auch für die gesamten symfony Tasks und Ihren spezifizierten Tasks aktiviert.

Dank den neuen Konfigurationsklassen von symfony 1.1, ist die Konfigurierbarkeit des Frameworks noch nie so einfach gewesen.