Documentação do Symfony - versão 3.1
Renderizada do repositório symfony-docs-pt-BR no Github
Há apenas uma maneira recomendada para instalar o Symfony:
Best Practice
Use sempre o Composer para instalar o Symfony.
Composer é o gerenciador de dependência usado por aplicações PHP modernas. Adicionar ou remover requisitos para o seu projeto e atualizar as bibliotecas de terceiros usadas em seu código é muito fácil graças ao Composer.
Antes de instalar o Symfony, você precisa certificar-se de que tem o Composer instalado globalmente. Abra o seu terminal (também chamado de console de comando) e execute o seguinte comando:
1 2 | $ composer --version
Composer version 1e27ff5e22df81e3cd0cd36e5fdd4a3c5a031f4a 2014-08-11 15:46:48
|
Você provavelmente verá um identificador de versão diferente. Não se preocupe porque o Composer é atualizado em uma base contínua e sua versão específica não importa.
No caso de você não ter o Composer instalado globalmente, execute os dois comandos seguintes se você usa Linux ou Mac OS X (o segundo comando irá pedir a sua senha de usuário):
1 2 | $ curl -sS https://getcomposer.org/installer | php
$ sudo mv composer.phar /usr/local/bin/composer
|
Note
Dependendo da sua distribuição Linux, você pode precisar executar o comando su
em vez de sudo
.
Se você usa um sistema Windows, baixe o instalador executável da página de download do Composer e siga os passos para instalá-lo.
Agora que tudo está configurado corretamente, você pode criar um novo projeto usando o Symfony. Em seu console de comando, navegue até o diretório onde você tem permissão para criar arquivos e execute os seguintes comandos:
1 2 | $ cd projects/
$ composer create-project symfony/framework-standard-edition blog/
|
Esse comando irá criar um novo diretório chamado blog
que conterá
um novo projeto usando a versão estável mais recente disponível do Symfony.
Uma vez que a instalação estiver concluída, entre no diretório blog/
e verifique se
o Symfony está instalado corretamente, executando o seguinte comando:
1 2 3 4 | $ cd blog/
$ php app/console --version
Symfony version 2.6.* - app/dev/debug
|
Se você ver a versão do Symfony instalado, tudo funcionou como esperado. Se não, você pode executar o script a seguir para verificar o que impede o seu sistema de executar as aplicações Symfony corretamente:
1 | $ php app/check.php
|
Dependendo do seu sistema, você pode ver até duas listas diferentes ao executar o script check.php. A primeira mostra os requisitos obrigatórios que o seu sistema deve atender para executar aplicações Symfony. A segunda lista mostra o requisitos opcionais sugeridos para uma ótima execução das aplicações Symfony:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | Symfony2 Requirements Checker
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> PHP is using the following php.ini file:
/usr/local/zend/etc/php.ini
> Checking Symfony requirements:
.....E.........................W.....
[ERROR]
Your system is not ready to run Symfony2 projects
Fix the following mandatory requirements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* date.timezone setting must be set
> Set the "date.timezone" setting in php.ini* (like Europe/Paris).
Optional recommendations to improve your setup
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* short_open_tag should be disabled in php.ini
> Set short_open_tag to off in php.ini*.
|
Tip
Os lançamentos do Symfony são assinados digitalmente por razões de segurança. Se você quiser verificar a integridade da instalação do Symfony, dê uma olhada no repositório público de checksums e siga esses passos para verificar as assinaturas.
Depois de criar a aplicação, entre no diretório blog/
e você verá
arquivos e diretórios que foram gerados automaticamente:
1 2 3 4 5 6 7 8 9 10 11 | blog/
├─ app/
│ ├─ console
│ ├─ cache/
│ ├─ config/
│ ├─ logs/
│ └─ Resources/
├─ src/
│ └─ AppBundle/
├─ vendor/
└─ web/
|
Essa hierarquia de arquivos e diretórios é a convenção proposta pelo Symfony para estruturar suas aplicações. O objetivo recomendado de cada diretório é o seguinte:
app/cache/
, armazena todos os arquivos de cache gerados pela aplicação;app/config/
, armazena todas as configurações definidas para qualquer ambiente;app/logs/
, armazena todos os arquivos de log gerados pela aplicação;app/Resources/
, armazena todos os templates e os arquivos de tradução da
aplicação.src/AppBundle/
, armazena o código específico do Symfony (controladores e rotas),
seu código de domínio (por exemplo, classes do Doctrine) e toda a sua lógica de negócio;vendor/
, esse é o diretório onde o Composer instala as dependências da
aplicação e você nunca deve modificar quaisquer dos seus conteúdos;web/
, armazena todos os arquivos de front controller e todos os assets web, tais
como folhas de estilo, arquivos JavaScript e imagens.Quando o Symfony 2.0 foi lançado, a maioria dos desenvolvedores naturalmente adotou a forma
de dividir as aplicações em módulos lógicos do Symfony 1.x. É por isso que muitas apps Symfony
usam bundles para dividir seu código em recursos lógicos: UserBundle
,
ProductBundle
, InvoiceBundle
, etc.
Mas um bundle é designado para ser algo que possa ser reutilizado como um pedaço de software
stand-alone. Se UserBundle
não pode ser usado “como é” em outras apps Symfony
, então não deve ter seu próprio bundle. Além disso, InvoiceBundle
depende
do ProductBundle
, então, não há nenhuma vantagem em ter dois bundles separados.
Best Practice
Criar apenas um bundle chamado AppBundle
para a lógica da aplicação
A implementação de um único bundle AppBundle
em seus projetos vai tornar o seu código
mais conciso e fácil de entender. A partir do Symfony 2.6, a documentação
oficial do Symfony usa o nome AppBundle
.
Note
Não há necessidade de prefixar o AppBundle
com seu próprio vendor (por exemplo,
AcmeAppBundle
), pois este bundle de aplicação nunca será
compartilhado.
Ao todo, esta é a estrutura de diretórios típica de uma aplicação Symfony que segue as melhores práticas:
1 2 3 4 5 6 7 8 9 10 11 12 13 | blog/
├─ app/
│ ├─ console
│ ├─ cache/
│ ├─ config/
│ ├─ logs/
│ └─ Resources/
├─ src/
│ └─ AppBundle/
├─ vendor/
└─ web/
├─ app.php
└─ app_dev.php
|
Tip
Se você estiver usando o Symfony 2.6 ou uma versão mais recente, o bundle AppBundle
já foi gerado para você. Se você estiver usando uma versão mais antiga do Symfony,
você pode gerá-lo, executando o seguinte comando manualmente:
1 | $ php app/console generate:bundle --namespace=AppBundle --dir=src --format=annotation --no-interaction
|
Se o seu projeto ou a infraestrutura requer algumas alterações na estrutura de diretórios padrão
do Symfony, você pode sobrescrever a localização dos diretórios principais:
cache/
, logs/
e web/
.
Além disso, o Symfony3 usará uma estrutura de diretório ligeiramente diferente quando ele for lançado:
1 2 3 4 5 6 7 8 9 10 11 12 | blog-symfony3/
├─ app/
│ ├─ config/
│ └─ Resources/
├─ bin/
│ └─ console
├─ src/
├─ var/
│ ├─ cache/
│ └─ logs/
├─ vendor/
└─ web/
|
As mudanças são bastante superficiais, mas, por hora, nós recomendamos que você use a estrutura de diretórios do Symfony2.