Laravel 5.6 vs Symfony 4: La mejor batalla de PHP Framework
En los pasados meses los dos frameworks más populares dentro del ecosistema PHP recibieron actualizaciones importantes: Laravel & Symfony.
Laravel fue recientemente actualizado a su versión 5.6. Esta nueva versión cuenta con algunas innovaciones atractivas, tales como, soporte para el algoritmo Argon2i implementado con PHP 7.2, nuevas directivas del motor de vistas Blade, además de mejoras en el sistema de componentes de este y el agregado de un paquete para mostrar errores desde el CLI de Laravel.
Symfony tuvo una actualización aún mayor, ya que pasó de la versión 3.4 a la 4. Con una simplificación de código notable, Symfony 4 promete ser el framework más rápido de PHP en la actualidad.
Ambos frameworks están elaborados bajo un tipo de arquitectura MVC, haciendo uso de patrones y conceptos avanzados de Programación Orientada a Objetos. La elegancia que estos frameworks proporcionan te permite elaborar casi cualquier tipo de proyecto, es por eso que la mayoría de los desarrolladores los prefieren. Por eso, en esta ocasión nos enfocaremos en mostrar las diferencias de ambo, y que ventajas nos ofrece cada uno. La importancia de conocer las características de cada framework es que la decisión que tomemos repercutirá en el desarrollo y mantenimiento de nuestro proyecto.
Symfony 4
Symfony es el framework desarrollado por SensioLabs (a cargo de Fabien Potencier) y desde su salida en 2011 ha sido de los frameworks más sólidos de PHP. Los componentes que forman parte de este lo hacen un framework robusto y ágil.
Symfony 4 simplificó muchas cosas. Aquí tienes algunas de las características más notorias de la nueva actualización:
Instalación
Anteriormente la forma de instalar Symfony requería de un instalador personalizado, y esto, era algo molesto; ahora nos permite instalarlo por medio de un comando común de Composer:
composer create-project symfony/skeleton project_name
Código
Al crear un nuevo proyecto con la versión 4, Symfony comienza con la estructura de un microframework. Elimina la mayoría de los componentes que en versiones anteriores se incluyen por defecto.
Symfony Flex
Ya que ahora Symfony comienza como un microframework, el equipo de SensioLabs desarrolló un plugin de Composer llamada Symfony Flex, el cual, es una simplificación de los comandos require, update y remove. Básicamente permite instalar los módulos de Symfony mediante un alias, además de registrarlo automáticamente en la configuración del framework, evitandonos la necesidad de hacerlo manualmente.
Otros detalles
- Simplificación en la estructura de directorios.
- Se eliminaron los bundles.
- Se simplificó la manera de manejar los entornos de desarrollo, ahora puedes hacerlo por medio de una variable global en lugar de un archivo por cada uno.
Laravel 5.6
Laravel es un proyecto creado por Taylor Otwell, desarrollado principalmente por él con alguna ayuda de la comunidad. Laravel ha acaparado mucha atención de los desarrolladores debido a la gran variedad de componentes y paquetes con los que cuenta. Otro punto positivo de Laravel es la versatilidad con la que está codificado haciéndolo mucho más fácil de aprender y de utilizar.
Laravel se actualiza constantemente, aproximadamente cada 6 meses. Aquí tienes algunas de las nuevas características de la versión 5.6:
Collision Package
Este es un paquete desarrollado por Nuno Maduro para mostrar errores de manera llamativa cuando utilizas tu app a través de la línea de comandos. El diseño de estos errores es algo parecido a los que se muestran en el navegador.
Algoritmo Argon2i
La nueva versión de PHP (7.2) incluyó un nuevo algoritmo de encriptación llamada Argon2i. Laravel añadió el soporte para este algoritmo desde su componente de encriptación. Ahora podemos encriptar las contraseñas dentro de nuestra app con un algoritmo más reciente y seguro.
Registro de errores (Logging)
Como parte del desarrollo, es muy importante contar con un sistema de registro al cual recurrir, para encontrar bugs más rápido. Laravel ya contaba por defecto con un sistema de registro, el cual era por medio de archivos. Contaba con la posibilidad de agregar nuevos drivers para esto. Agregando ahora el soporte para enviar los errores a un grupo de Slack, lo cual es excelente.
Otros detalles
- Nuevas directivas del motor de vistas Blade.
- Mejoras en los componentes del motor de vistas Blade.
- Comandos para la generación de controladores para una API.
- Administración de canales para websockets de una manera parecida a las rutas.
¿Cual es mejor de los dos?
Está claro que cada framework cumple ciertos requisitos mejor que el otro. Ambos ofrecen ayudas muy útiles para el desarrollo. Ambos son frameworks de calidad.
Como todo, decidir si utilizar un framework en lugar de otros siempre es decisión del desarrollador. Hay que recalcar que cada framework se adapta diferente, con base a los requerimientos de cada aplicación.
A nuestro parecer, aunque su rendimiento no sea mejor que el de Symfony, Laravel es mejor. ¿Por qué? Laravel tiene una curva de aprendizaje bastante cómoda, además de una comunidad muy grande dispuesta a ayudar. No es necesario ser un experto para programar con él. Además te da la libertad de crear una estructura con base a tus necesidades. Su gran cantidad de componentes y paquetes hace que te enfoques en lo que es más importante para ti: la lógica de negocio de tu proyecto.
Sin embargo esto no significa que odie Symfony ni que crea que no es bueno. Al contrario, es un excelente framework en proyectos más grandes (hasta Taylor, el creador de Laravel lo sabe). Con su nueva actualización la creación de microservicios será excepcional. Y si tienes buenas bases en cuanto a POO, puedes hacer mucho con él.
Al momento de tomar la decisión sobre cuál de los dos es mejor, siempre analiza tus necesidades y en cómo cada uno puede adaptarse mejor a tu proyecto. Por último, haz lo posible por programar con ambos frameworks, te aseguro que no te arrepentirás.
¡Déjanos ayudarte con tu nueva aplicación en PHP!
Tagged under: Desarrollolaravelphp
David
Gracias por el artículo.
Estoy viendo que si voy a hacer alguna web que tenga muchas extensiones y necesite cosas que no me apetece programar (como un chat, un foro, etc…) será mejor laravel, no? aunque symfony sea más rápido, parece que merecerá la pena usar laravel.
Gracias!