Acabo de crear un nuevo proyecto de Symfony 2.5 con un comando de compositor normal:
php composer.phar create-project symfony/framework-standard-edition path/ 2.5.0
La Terminal me pregunta:
¿Le gustaría utilizar la estructura de directorios de Symfony 3?
¿Cuál es esta estructura de directorios de Symfony 3? Nunca lo había visto antes ... ¿Es nuevo desde 2.5?
¿Cuáles son los beneficios de usarlo?
¿Hay alguna forma de replicar esta estructura de directorios?
Respuestas:
Quiero usar la nueva estructura de directorios de Symfony 3, pero no veo la pregunta.
La pregunta
Would you like to use Symfony 3 directory structure?
se eliminó al crear un nuevo proyecto debido a la confusión que causó. Puede forzar el uso de la estructura de directorios usando lo siguiente:Si prefiere la nueva estructura, puede agregar la variable de entorno
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE
a su.bashrc
o.bash_profile
así:Hacer que todos los proyectos futuros soliciten la nueva estructura
Haga que SOLO ESTE proyecto pregunte si queremos usar la nueva estructura.
Si lo deseaba solo para un proyecto en particular (uno solo), puede usar:
Si la variable de entorno
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE
está configurada y configurada entrue
,composer
le preguntará si desea usar la nueva estructura de directorio.Continuar leyendo a continuación para todos los cambios entre el
Symfony2
y laSymfony3
estructura de directorios.¿Cuál es la nueva estructura de directorios de Symfony 3?
(y cómo me afecta a mí y a mi flujo de trabajo)
Investigué esto creando 2 proyectos, uno con
symfony-2.5.0
estructura de directorio, otro consymfony-3
(solo cambio de estructura de directorio).Haz uno de cada proyecto:
Así que ahora tenemos los 2 directorios diferentes que queremos comparar.
Encuentra la
diff
erenciaPuede
diff
entre los 2 directorios usando:Esto muestra los archivos que difieren en las 2 versiones.
Desglose de
diff
Aquí hay un desglose de todo en el diferencial.
Beneficios de la estructura de directorios de Symfony 3
La nueva estructura de directorio tiene una serie de beneficios, todos los cuales son menores y pueden requerir cambios mínimos en su flujo de trabajo.
PHPUnit
phpunit
se puede ejecutar desde la raíz del proyecto sin tener que especificar explícitamente la ruta del archivo de configuración.Ejecutables binarios
Todos los archivos ejecutables binarios ahora están todos ubicados en una única ubicación: el
bin
directorio (similar a un sistema operativo tipo Unix) .El nuevo
/var
directorioEl nuevo
/var
directorio contiene los archivos en los que el sistema escribe datos durante el curso de su funcionamiento (similar a un sistema operativo tipo Unix) .Esto también hace que sea más fácil agregar permisos, todo el
/var
directorio debe ser escribible por su servidor web. Puede seguir la guía de Symfony2 para configurar permisos (sustituyendoapp/cache
&&app/logs
porvar
), cualquier otro archivo que desee escribir localmente también se puede encontrar aquí.Verificación de requisitos de Symfony
La ejecución
symfony_requirements
generará configuraciones de entorno obligatorias y opcionales.p.ej:
Conclusión
Parece que Sensio Labs hizo un buen orden, todos los cambios anteriores tienen mucho sentido, deberían ser fáciles de implementar al actualizar de
2.5
a3.x
, ¡estos probablemente serán el menor de tus problemas!Leer los documentos
Symfony 2.x => 3.0 Actualice los documentos aquí
Symfony 3.0 La arquitectura
Fecha de lanzamiento de Symfony 3
Parece muy lejano mirar el proceso de lanzamiento (vale la pena leerlo) :
http://symfony.com/doc/current/contributing/community/releases.html
(fuente: symfony.com )
fuente
SENSIOLABS_ENABLE_NEW_DIRECTORY_STRUCTURE=true
(vea la parte superior de mi respuesta para obtener detalles completos)Aquí hay una lista de cambios entre la estructura de directorios nueva y antigua:
var
introduce una nueva carpetaapp/console
se mueve abin/console
app/check.php
se mueve / renombra abin/symfony_requirements
app/phpunit.xml.dist
se mueve a la carpeta raízapp/SymfonyRequirements.php
se mueve avar/SymfonyRequirements.php
app/cache
yapp/logs
se han movido avar/cache
yvar/logs
, respectivamente(Actualmente, no todos los archivos antiguos parecen haberse eliminado, por lo que es posible que desee hacerlo manualmente antes de enviar todos los archivos al control de versiones. Consulte este problema ).
Entonces, ¿cuál es el beneficio?
Hay un par de beneficios con estos cambios. En primer lugar, todos los archivos y carpetas que deberían poder escribirse para Symfony ahora están en la
var
carpeta. Esto debería facilitar la configuración de los permisos: simplemente asegúrese de tener acceso de escritura a lavar
carpeta y listo. Esto se sugiere en esta publicación de blog ; todavía no lo he probado.En segundo lugar, todos los ejecutables, incluidos
console
, están ahora en labin
carpeta. Eso permite a los usuarios de Bash, por ejemplo, agregar esto a su.profile
archivo:Ahora ni siquiera tiene que escribir
bin/console
más, simplementeconsole
será suficiente (tenga en cuenta que tuve que reiniciar para que esto funcione).También hay algunas otras mejoras.
app/check.php
ahora es un ejecutable, por lo que puede llamarlo usando enbin/symfony_requirements
lugar dephp app/check.php
. (Usando el.profile
truco que describí anteriormente, simplementesymfony_requirements
será suficiente también)Y, por último, pero no menos importante, ya no tiene que especificar la ubicación del archivo de configuración cuando ejecuta PHPUnit. Entonces, en lugar de
phpunit -c app
simplemente ejecutarphpunit
.¿Puedo actualizar los proyectos existentes a esta nueva estructura también?
De forma predeterminada, solo obtendrá la pregunta "¿Quiere usar la nueva estructura de directorio?" Cuando cree un nuevo proyecto (usando
composer create-project symfony/framework-standard-edition path/ "2.5.*"
).Sin embargo, es posible actualizar una aplicación Symfony existente, pero es una solución algo hacky. Ahora me las he arreglado para hacerlo con varias aplicaciones, y puede leer los pasos en esta esencia . Sin embargo, dado que no fue diseñado para esto, no puedo garantizar que siempre funcione.
Actualizar
Resulta que Symfony ya no te pregunta si quieres usar la nueva estructura de directorios al crear una nueva aplicación Symfony a través de Composer. Sin embargo, todavía es posible crear proyectos Symfony con la nueva estructura de directorios, usando una variable de entorno. Para obtener más información, consulte ¿Cómo puedo crear un nuevo proyecto Symfony con la nueva estructura de directorios?
fuente
.profile
, puede simplemente volver a obtener el archivo en su shell actual, o salir e iniciar un nuevo shell. La ejecución. ~/.profile
volverá a generar el archivo (tenga en cuenta el espacio de punto inicial).