The symfony Cookbook

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

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.

Symfony Live 2010 Paris Conference
symfony training
Be trained by symfony experts
Jul 22: Paris (1.2 + Doctrine - Français)
Aug 19: San Francisco (1.2 + Doctrine - English)
Sep 23: Paris (1.2 + Doctrine - Français)
Oct 21: Nantes (1.2 + Doctrine - Français)
Nov 18: Paris (1.2 + Doctrine - Français)
and more...

Search


powered by google
You are currently browsing "The symfony Cookbook" in Russian for the 1.1 version - Switch to version: - Switch to 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 official user mailing-list.

The Sensio Labs Network

Since 1998, Sensio Labs has been promoting the Open-Source software movement by providing quality web application development, training, consulting, and supporting several large Open-Source projects.