The symfony Cookbook

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

Be trained by symfony experts
Dec 10: Paris (1.1 - Francais)
Dec 10: Atlanta (1.1 - English)
Dec 17: Montreal (1.1 - Francais)
Jan 21: Paris (1.1 - Francais)
Feb 18: Paris (1.1 - Francais)
and more...

About

You are currently reading "The symfony Cookbook" which is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License license.

Search


powered by google

Chapter Content

You are currently browsing "The symfony Cookbook" in Russian for the 1.1 version. Switch to another version: Switch to another language:
Creative Commons License This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Unported License.
Translation of this work into another language is explicitly allowed.

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

Questions & Feedback

If you find a typo or an error, please register and open a ticket.

If you need support or have a technical question, please post to the user mailing-list or to the forum.