The symfony Cookbook

Como personalizar a estrutura de diretórios padrão

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 2.0 Preview Release
symfony training
Be trained by symfony experts
Apr 12: Paris (What's new in 1.3/1.4 - Français)
Apr 21: Paris (1.4 + Doctrine - Français)
Apr 28: Online (What's new in 1.3/1.4 - Français)
and more...

Search


powered by google
You are currently browsing "The symfony Cookbook" in Brazilian Portuguese for the 1.2 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.
This version of symfony is not maintained anymore.
If some of your projects still use this version, consider upgrading as soon as possible.

Umas das grandes vantagens de usar um framework é a estrutura consistente que ele proporciona ao longo dos projetos. Todos os projetos compartilham os mesmos padrões de código e também a mesma estrutura de diretórios. Essa estrutura permite que vários desenvolvedores trabalhem no mesmo projeto ao mesmo tempo. Mas isso também aumenta a facilidade de manter as aplicações desenvolvidas. Quando alguém pede que você de manutenção em um projeto que inicialmente você não participou, você conhece aonde todos os arquivos estão armazenados e você já pode sair programando na mesma hora.

Mas as vezes você precisa personalizar a estrutura de diretórios dada pelo symfony. Vamos pegar dois exemplos bem diferentes.

Primeiro, vamos dizer que você hospeda seu projeto symfony em um ambiente compartilhado(shared host), onde o diretório raiz web é chamado public_html. Editando a classe ProjectConfiguration, é bem fácil de mudar o diretório web padrão de web para public_html como mostrado abaixo:

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

Vamos ver um outro exemplo. Seu projeto symfony agora é hospedado em uma grande companhia com regras de segurança rigídas. Eles não deixam sua aplicação escrever no disco, exceto em alguns diretórios específicos.(/tmp por exemplo). Como o symfony só escreve em dois diretórios (cache, e log), é simples atualizar novamente a classe ProjectConfiguration e mover esses diretórios para dentro de /tmp:

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

O método setCacheDir() não muda somente a constante sf_cache_dir mas todas as relacionadas ao cache : 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 e sf_module_cache_dir.

E a última mas não menos importante: Como as classes de configuração também são usadas na symfony CLI, todos esses ajustes também ficam ativos para todas as tarefas instaladas com o symfony e as suas específicas.

Graças as novas classes de configuração do symfony 1.1, a configuração do framework nunca foi tão fácil.

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.
Sensio Labs also supports several large Open-Source projects.