Acabei de criar um novo projeto Symfony 2.5 com um comando composer regular:
php composer.phar create-project symfony/framework-standard-edition path/ 2.5.0
O Terminal me pergunta:
Você gostaria de usar a estrutura de diretório do Symfony 3?
O que é essa estrutura de diretório do Symfony 3? Eu nunca tinha visto isso antes ... É novo desde 2.5?
Quais são os benefícios de usá-lo?
Existe alguma maneira de replicar essa estrutura de diretório?
Respostas:
Eu quero usar a nova estrutura de diretório do Symfony 3, mas não vejo a pergunta?
A pergunta
Would you like to use Symfony 3 directory structure?
foi removida ao criar um novo projeto devido à confusão que causou. Você pode forçar o uso da estrutura de diretório usando o seguinte:Se você preferir a nova estrutura, pode adicionar a variável de ambiente
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE
ao seu.bashrc
ou.bash_profile
assim:Faça com que todos os projetos futuros peçam a nova estrutura
Faça APENAS ESTE projeto perguntar se queremos usar a nova estrutura.
Se você quiser apenas para um determinado projeto (um único), você pode usar:
Se a variável de ambiente
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE
for definida e definida comotrue
,composer
o perguntará se você deseja usar a nova estrutura de diretório.Continue lendo abaixo para todas as mudanças entre a estrutura de diretório
Symfony2
eSymfony3
.Qual é a nova estrutura de diretório do Symfony 3?
(e como isso afeta a mim e meu fluxo de trabalho)
Eu pesquisei isso criando 2 projetos, um com
symfony-2.5.0
estrutura de diretório e outro comsymfony-3
(apenas alteração na estrutura de diretório).Faça um de cada projeto:
Portanto, agora temos os 2 diretórios diferentes que queremos comparar.
Encontre o
diff
erênciaVocê pode
diff
escolher entre os 2 diretórios usando:Isso mostra os arquivos que diferem nas 2 versões.
Repartição de
diff
Aqui está uma análise de tudo no diff.
Benefícios da estrutura de diretório do Symfony 3
A nova estrutura de diretório tem vários benefícios, todos secundários e podem exigir mudanças mínimas em seu fluxo de trabalho.
PHPUnit
phpunit
pode ser executado a partir da raiz do projeto sem a necessidade de especificar explicitamente o caminho do arquivo de configuração.Executáveis Binários
Todos os arquivos binários executáveis agora estão localizados em um único local - o
bin
diretório (semelhante a um sistema operacional unix-like) .O novo
/var
diretórioO novo
/var
diretório contém os arquivos nos quais o sistema grava dados durante o curso de sua operação (semelhante a um sistema operacional unix-like) .Isso também torna mais fácil adicionar permissões, todo o
/var
diretório deve ser gravável pelo seu servidor web. Você pode seguir o guia do Symfony2 para definir permissões (substituindoapp/cache
&&app/logs
porvar
), quaisquer outros arquivos que você deseja escrever localmente também podem estar localizados aqui.Verificação de requisitos Symfony
A execução
symfony_requirements
produzirá configurações de ambiente obrigatórias e opcionais.por exemplo:
Conclusão
Parece uma boa arrumação da Sensio Labs, todas as alterações acima fazem todo o sentido, devem ser fáceis de implementar durante a atualização de
2.5
para3.x
, estes serão provavelmente o menor dos seus problemas!Leia a documentação
Symfony 2.x => 3.0 Documentos de atualização aqui
Symfony 3.0 A arquitetura
Data de lançamento para Symfony 3
Parece muito distante de olhar para o processo de liberação (vale a pena ler) :
http://symfony.com/doc/current/contributing/community/releases.html
(fonte: symfony.com )
fonte
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true
(veja o topo da minha resposta para detalhes completos)Aqui está uma lista de mudanças entre a estrutura de diretório antiga e nova:
var
pasta é introduzidaapp/console
é movido parabin/console
app/check.php
foi movido / renomeado parabin/symfony_requirements
app/phpunit.xml.dist
é movido para a pasta raizapp/SymfonyRequirements.php
é movido paravar/SymfonyRequirements.php
app/cache
eapp/logs
foram movidas paravar/cache
evar/logs
, respectivamente(Atualmente, nem todos os arquivos antigos parecem ter sido removidos, então você pode querer fazer isso manualmente antes de enviar todos os arquivos para o controle de versão. Veja este problema )
Qual é o benefício?
Essas alterações trazem alguns benefícios. Em primeiro lugar, todos os arquivos e pastas que devem ser graváveis para o Symfony agora estão na
var
pasta. Isso deve tornar a configuração das permissões muito mais fácil: basta garantir o acesso de gravação àvar
pasta e pronto. Isso é sugerido nesta postagem do blog - eu não tentei fazer isso sozinho, ainda.Em segundo lugar, todos os executáveis, inclusive
console
, estão agora nabin
pasta. Isso permite que usuários do Bash, por exemplo, adicionem isso a seus.profile
arquivos:Agora você não precisa nem digitar
bin/console
mais, simplesmenteconsole
basta (note que eu tive que reiniciar para que isso funcione).Existem algumas outras melhorias também.
app/check.php
agora é um executável, portanto, você pode chamá-lo usando embin/symfony_requirements
vez dephp app/check.php
. (Usando o.profile
truque que descrevi anteriormente, simplesmentesymfony_requirements
será suficiente também)E, por último, mas não menos importante, você não precisa mais especificar a localização do arquivo de configuração ao executar o PHPUnit. Então, em vez de
phpunit -c app
você simplesmente executarphpunit
.Posso atualizar projetos existentes para esta nova estrutura também?
Por padrão, você obterá apenas a pergunta 'Deseja usar a nova estrutura de diretório' ao criar um novo projeto (usando
composer create-project symfony/framework-standard-edition path/ "2.5.*"
).No entanto, é possível atualizar um aplicativo Symfony existente, mas é uma solução um tanto hacky. Eu consegui fazer isso com vários aplicativos agora, e você pode ler as etapas nesta essência . Porém, como não foi projetado para isso, não posso garantir que funcionará sempre.
Atualizar
Acontece que o Symfony não pergunta mais se você deseja usar a nova estrutura de diretório, ao criar um novo aplicativo Symfony através do Composer. Entretanto, ainda é possível criar projetos Symfony com a nova estrutura de diretório, usando uma variável de ambiente. Para obter mais informações, consulte Como posso criar um novo projeto Symfony com a nova estrutura de diretório?
fonte
.profile
, você pode apenas recriar o arquivo em seu shell atual ou sair e iniciar um novo shell. A execução. ~/.profile
irá recriar o arquivo (observe o espaço de ponto inicial).