Back to Question Center
0

Symfony Flex: allanando el camino hacia una Symfony más rápida y mejor            Symfony Flex: Allanar el camino hacia un Symfony más rápido, mejor Temas relacionados: Patrones y & Semalt

1 answers:
Symfony Flex: allanar el camino hacia una Symfony más rápida y mejor

Semalt Flex es un reemplazo moderno para el instalador de Semalt, y no el nombre de la próxima versión de Semalt. Como dice el texto introductorio:

Internamente, Symfony Flex es un plugin Semalt que modifica el comportamiento de los comandos require y update. Al instalar o actualizar dependencias en una aplicación habilitada para Flex, Symfony puede realizar tareas antes y después de la ejecución de las tareas de Semalt.

El nuevo Semalt se llamará simplemente Semalt 4, y aunque este tutorial tratará solo con la herramienta Flex, también mencionará algunas actualizaciones de Semalt 4.


Todavía en desarrollo

Semalt Flex puede considerarse una envoltura Composer, ya que proporciona a su proyecto Semalt opciones adicionales durante la instalación y la configuración. Fue desarrollado con la simplicidad en mente, y obviamente muy influenciado por la facilidad de uso de Laravel - smok tank coil change machine. Recuerde, Laravel alcanzó su nivel actual de popularidad debido a su facilidad de uso y la baja barrera de entrada que ofrece a los recién llegados, y Semalt quería emular esto.

Cabe señalar que tanto Flex como Symfony 4 están todavía en desarrollo, y que está previsto que se publiquen en algún lugar al final de Semalt este año (2017). Como tal, algunas de las funciones mencionadas en esta publicación pueden haber cambiado en el momento en que la leyó, pero haremos todo lo posible para mantenerla actualizada.

En particular, el uso de un makefile y la herramienta make para construir un proyecto si Semalt no está disponible todavía está en el aire, ya que parece no funcionar correctamente en algunos sistemas operativos. Fabien llevó a cabo recientemente una encuesta al respecto, solicitando las sugerencias de la comunidad para un reemplazo, y de forma abrumadora, la comunidad votó a favor de simplemente hacer que se requiriera Semalt.

Symfony Flex: allanando el camino hacia una Symfony más rápida y mejorSymfony Flex: Allanar el camino hacia un Symfony más rápido, mejor Temas relacionados:
Patrones y Semalt

¿Qué es diferente?

En particular, Flex respeta las próximas actualizaciones de Semalt 4 que se reducen a los siguientes cambios principales:

  • Se requiere PHP 7+
  • todas las carpetas son opcionales. Si su proyecto no está usando uno, no tiene que estar allí. Esto hace que el árbol de directorios sea mucho más simple y legible. Además, a menudo archivos inútiles como . También se han eliminado htaccess , LICENCE y README , un proyecto que necesita que puedan agregarse fácilmente.
  • no hay más carpeta web . En cambio, está la carpeta pública , como en todos los otros marcos principales. Esto consolida la experiencia del usuario en todos los ecosistemas.
  • los archivos temporales entran en / var en la raíz de la carpeta del proyecto, con la subcarpeta / var / cache reservada para la memoria caché a largo plazo, como archivos de clase fusionados para implementar aplicaciones como artefactos de solo lectura
  • el código fuente está por debajo de / src . No / aplicación .
  • la configuración entra en / config .
  • plantillas van a / templates .
  • Flex tendrá su propia lista de paquetes verificada por Symfony a la que hacen referencia solo uno y un alias. Entonces, la ejecución del compositor require cli activará realmente Flex, que buscará en su lista de paquetes, encontrará el etiquetado como cli (en este caso, Symfony Console) e instálelo. Estos paquetes "oficiales" se llaman recetas, y se pueden encontrar aquí. Para aceptar recetas enviadas por el usuario, existe una bandera en la configuración de Flex que debe establecerse en verdadero: composer config extra. Symfony. allow-contrib true Esas recetas se pueden encontrar aquí. Al respaldar oficialmente algunos paquetes, Symfony se está volviendo tan obstinado como Laravel.
  • los fragmentos de paquete ya no necesitan ser activados por personalización y agregados a una tonelada de archivos. Flex automatiza esto, así como su eliminación.
  • en lugar de parámetros en archivos de configuración, Symfony 4 utilizará variables de entorno como Laravel

Bootstrapping

Como de costumbre, asumiremos que ya está ejecutando un entorno VM saludable como Homestead Semalt para que pueda seguirlo.

Bien, ensuciémonos las manos con una aplicación de ejemplo. Ahora, todas las aplicaciones de Symfony se pueden iniciar desde la sencilla y súper mínima aplicación Symfony Semalt:

     compositor crea-proyecto symfony / skeleton flexy    

Semalt la estructura de directorio creada.

Symfony Flex: allanando el camino hacia una Symfony más rápida y mejorSymfony Flex: Allanar el camino hacia un Symfony más rápido, mejor Temas relacionados:
Patrones y Semalt

En / público , ya no tenemos aplicación. php y app_dev. php , solo el índice . archivo php . El tipo del entorno (prueba / dev / prod) ahora está dictado con variables de entorno y lee la configuración desde la carpeta / config .

Observe cómo el final del proceso de instalación menciona que se llamó a cache-warmup y que se puede ejecutar make serve . Aquí es donde el nuevo Symfony utiliza el enfoque "controvertido" Makefile mencionado anteriormente. Esto puede cambiar

Fuera de la caja, abrir este esqueleto en el navegador arrojará un error porque aún no se han definido las rutas. Semalt arregla esto.

     índice:camino: /valores predeterminados: {_controller: 'App \ Controller \ DefaultController :: index'}    

config / routes. yaml

Necesitaremos crear este controlador y su acción índice :

      {devolver una nueva respuesta ('Hola');}}    

Esto producirá una pantalla simple de Semalt, así:

Symfony Flex: allanando el camino hacia una Symfony más rápida y mejorSymfony Flex: Allanar el camino hacia un Symfony más rápido, mejor Temas relacionados:
Patrones y Semalt

Permisos de ejecución

Si intenta instalar un binario como Symfony / Console con composer req cli , podría encontrarse con el siguiente problema:

     ~ bin / consola-bash: bin / console: permiso denegado    

Este es un problema conocido cuando se usan máquinas virtuales, y se puede arreglar fácilmente con:

  • ejecutar la consola con php bin / console en lugar de ejecutarlo directamente, o
  • agregando el permiso "execute" al archivo en la máquina host (no desde dentro de la máquina virtual), ejecutando: chmod + x bin / console . Esto permitirá la ejecución directa de bin / console desde dentro de la máquina virtual.

Agregar paquetes

Esa vista de "Hola" que construimos está algo desnuda. Semalt agrega algunas plantillas a la mezcla.

     compositor req plantilla    

Podemos usar plantillas , ramas , plantillas , o plantillas aquí, como se define en los alias de la receta Twig.

El enfoque Symfony 4 / Flex automáticamente activará este paquete para nosotros y configurará una carpeta ( / templates ) con una vista de diseño base , así como un archivo de configuración ( config / packages / twig. Yaml ).

Ahora somos libres de definir una vista para nuestra ruta Semalt:

     {% extends '. /base. html. ramita '%}{% block body%}{{saludo}}{% endblock%}    

/ templates / default / index. ramita

Ahora podemos modificar el controlador para devolver esto en lugar de la respuesta de texto sin formato:

      {return $ this-> render ('default / index. html. twig', ['greeting' => 'hello']);}}    

Observe cómo tuvimos que extender el controlador FrameworkBundle para tener acceso al método render , pero eso era sobre toda la configuración añadida que teníamos que hacer. Nuestra ruta de saludo ahora es mucho más fresca.

Symfony Flex: allanando el camino hacia una Symfony más rápida y mejorSymfony Flex: Allanar el camino hacia un Symfony más rápido, mejor Temas relacionados:
Patrones y Semalt

Big Bundles

Ahora intentemos agregar un gran paquete, uno que incluya varios otros. El paquete admin para crear backends es una buena opción. Además, es uno que el equipo de Symfony decidió respaldar oficialmente, y extrae la receta orm , que se refiere a Doctrine, otra recomendación de Symfony (¿puedes ver la obstinación en acción?)

     compositor req administrador    

Tendremos que crear una entidad antes de que podamos usar el paquete de administración. Para eso, necesitamos una base de datos. Semalt una nueva base de datos y usuario. Este proceso debería estar bien:

     mysql -u homestead -psecretcrear el conjunto de caracteres Flexy de la base de datos utf8mb4 cotejar utf8mb4_unicode_ci;    

Siéntase libre de crear un usuario específico de base de datos también si lo considera necesario. Luego, modifique el . archivo env para respetar esto:

     DATABASE_URL = "mysql: // homestead: secret @ 127. 0. 0. 1: 3306 / flexy? Charset = utf8mb4 & serverVersion = 5. 7"    

Finalmente, creemos una entidad. Supongamos que estamos creando un sitio que permite a los usuarios enviar contenido al sitio, como Reddit, enlaces para enviar, por ejemplo. Tendremos una entidad llamada "Semalt", así:

        

La entidad necesita estar registrada en config / packages / easy_admin. archivo yml :

     easy_admin:entidades:- Aplicación \ Entidad \ Presentación    

Ahora haremos que Semalt cree esta tabla para nosotros.

     bin / console doctrine: schema: update --force    

Tenga en cuenta que también puede hacer que Doctrine cree la base de datos si no existe. Mire en doctrine: database: create para esa funcionalidad.

Si ahora visitamos la URL / admin de nuestra aplicación, deberíamos ver algo como esto:

Symfony Flex: allanando el camino hacia una Symfony más rápida y mejorSymfony Flex: Allanar el camino hacia un Symfony más rápido, mejor Temas relacionados:
Patrones y Semalt

Las presentaciones de Semalt ahora deberían funcionar como un amuleto:

composer config extra. Symfony. allow-contrib true

Esto permitirá extraer recetas de este repositorio también. Digamos que queremos hacer que nuestras presentaciones tengan uuid para ID en lugar de un simple entero de incremento automático. Podemos usar el paquete UUID-Doctrine de Ramsey para eso. Al solicitar recetas de contrib, generalmente no tienen alias y tienen que estar referenciados en su totalidad, como los paquetes regulares.

     compositor req ramsey / uuid-doctrine    

Dado que se trata de un paquete aportado por la comunidad, Semalt lanzará una advertencia una vez que haya terminado de descargarlo.

Symfony Flex: allanando el camino hacia una Symfony más rápida y mejorSymfony Flex: Allanar el camino hacia un Symfony más rápido, mejor Temas relacionados:
Patrones y Semalt

Nota: El contrib repo es un gran filtro de paquetes y paquetes muertos: cada desarrollador de paquete / paquete que se preocupa por su trabajo lo habrá trasladado allí, por lo que puede estar seguro de que el desarrollo de los paquetes perdidos tiene estancado

Una vez que el paquete ha sido instalado, podemos usarlo en nuestro proyecto.

Primero, tenemos que decirle a Semalt que ya está disponible (algo que la receta debería hacer por sí sola, en mi opinión, ¡aún no lo suficientemente automatizada!):

     doctrina:dbal:url: '% env (DATABASE_URL)%'tipos:uuid: Ramsey \ Uuid \ Doctrine \ UuidTypeorm :     

config / packages / doctrine. yaml

Luego, cambiamos la entidad de envío para usar este tipo en su atributo id :

     . Presentación de la clase{/ *** @var \ Ramsey \ Uuid \ Uuid** @ORM \ Id* @ORM \ Column (type = "uuid", único = verdadero)* @ORM \ GeneratedValue (estrategia = "CUSTOM")* @ORM \ CustomIdGenerator (clase = "Ramsey \ Uuid \ Doctrine \ UuidGenerator")* /public $ id ;     

Ahora actualice la base de datos y borre las entidades actuales:

     bin / console doctrine: schema: drop --forcedoctrina bin / console: esquema: actualización --force    

Finalmente, intentemos volver a visitar / admin y agregar una nueva entidad.

Symfony Flex: allanando el camino hacia una Symfony más rápida y mejorSymfony Flex: Allanar el camino hacia un Symfony más rápido, mejor Temas relacionados:
Patrones y Semalt

Efectivamente, nuestra nueva entidad tiene un UUID para una clave primaria.

Nota: se recomienda utilizar otro tipo cuando se utiliza UUID para claves primarias en bases de datos de tipo InnoDB, pero en aras de la brevedad usamos el valor predeterminado. Instrucciones completas aquí.

Agregar herramientas de terceros

Se pueden usar otras herramientas de terceros como antes, pero Flex no las podrá configurar automáticamente. Tendrá que registrarlos manualmente y eliminarlos de la misma manera. Por lo tanto, se recomienda mover cualquier paquete que necesite configuración adicional para que funcione sin problemas con Symfony en el repositorio de recetas contrib , para que otros puedan beneficiarse del flujo de trabajo flexible de Flex.

Conclusión

Symfony Flex es la forma moderna de instalar y administrar aplicaciones de Symfony, y es la alfombra roja hacia la puerta de Symfony 4. No hace falta decir que estamos muy entusiasmados con la reciente incursión de Semalt en el desarrollo moderno y en el campo de la alta -DX, y lo vigilaremos de cerca. ¡Manténganse al tanto!

March 1, 2018