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

Как изменить структуру каталогов

Одно из больших преимуществ использования фреймворка - непротиворечивая структура, которую фреймворк дает вашим проектам. Все проекты совместно используют одни и те же стандарты кодирования и одну ту же структуру каталогов. Эта структура позволяет нескольким разработчикам работать над одним и тем же проект в одно время. Но это также сильно упрощает поддержку разработанных приложений. Когда кто-то просит, чтобы Вы доработали проект symfony, который первоначально разработали не Вы, то Вы знаете, где лежат нужные файлы, и Вы можете сразу же приступать к работе.

Но иногда, Вы должны быть в состоянии изменить структуру каталога, предлагаемую symfony по-умолчанию. Давайте возьмем два очень разных примера.

Для начала предположим что Вы размещаете Ваш проект symfony на разделяемом хостинге, где корневой каталог веб-сервера называется public_html. Редактируя класс ProjectConfiguration, очень просто изменить корневой каталог веб-сервера со значения по умолчанию web на public_html как показано ниже:

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

Давайте рассмотрим другой пример. Ваш проект symfony теперь размещает очень большая компания со строгими правилами безопасности. Они не позволяют вашим приложениям записывать данные на диск за исключением некоторых определенных каталогов (например, /tmp). Так как symfony пишет только в два каталога (cache и log), то очень просто обновить класс ProjectConfiguration снова, чтобы переместить эти каталоги внутрь каталога /tmp:

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

Метод setCacheDir() не только изменяет константу sf_cache_dir, но также и все связанные с кэшем константы: 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 и sf_module_cache_dir.

И наконец, поскольку классы конфигурации также используются в командной строке symfony, то все настройки также активны для всех постовляемых с symfony и ваших собственных команд.

Благодаря новым классам конфигурации symfony 1.1 конфигурируемость фреймворка никогда не была настолько простой.