Mis impresiones sobre Laravel Blog
Tengo casi dos meses realizando un proyecto con Laravel, hacía años que no escribía código en PHP y la verdad es que lo he estado disfrutando mucho.
Laravel es un framework con bastante comunidad, es muy fácil encontrar ayuda y tutoriales. La curva de aprendizaje en mi caso fue completamente plana, esto porque muchas cosas se parecen a Rails y PHP fue el segundo lenguaje de backend que aprendí a principios de los 2000's.
En este post planeo describir aquellas cosas que más me gustaron sobre este framework y aquéllas que no. Quiero dejar en claro que no soy un experto en Laravel por lo tanto mi opinión puede estar equivocada.
En primer lugar decidí usar Laravel para hacer el backend de una app con aproximadamente 50,000 usuarios activos. Estoy haciendo una API Rest que será consumida por una app en Angular JS vía web y una app en React Native desde dispositivos iOS y Android. Así que Laravel solo contendrá servicios que regresen JSON.
Lo que me agrada
Una de las cosas que más me gustó fueron las migraciones, creo que esta es una característica importantísima en un framework. Cuando descubrí que podía hacer esto casi que estuve convencido completamente. La manera en que se hace es exactamente igual que en Rails, defines una clase con las columnas de la tabla, indices, etc. Luego desde la línea de comandos corres las migraciones y listo, tu base de datos estará creada.
La manera de llenar de información de tu base de datos de desarrollo es estupenda, utilizar el Faker para generar información dummy es una buena ayuda. Con esta herramienta puedes generar cientos de registros en tu base de datos, ideal para tener información de donde puedas sacar reportes, hacer pruebas en desarrollo o inclusive pruebas automatizadas.
El MVC que utiliza es exactamente igual al de Rails, modelos por cada tabla en la base de datos, controladores con métodos que se ejecutan en base a un enrutador, middlewares, policies, etc.
Integración con Composer para el manejo de paquetes y dependencias. Fácil de agregar nuevos paquetes con esta herramienta.
Un facade para manejo de archivos en disco. Esta es una de las características favoritas, es muy sencillo subir archivos al servidor, amazon S3, Rackspace o inclusive crear un plugin para Dropbox.
Integración de membresías usando Stripe para realizar los pagos, aunque la integración con Stripe es bastante sencilla, es una buena ayuda que esto ya esté directamente en el framework, basta con requerir el paquete usando composer y un par de configuraciones.
Lo que no me agrado
Al parecer no es posible subir archivos usando el verbo http PUT, esto sin duda que rompe con la especificación REST, ya que cuando quiero actualizar un registro que contiene una imagen, simplemente Laravel no recoge los parámetros correctamente cuando va un archivo de por medio.
Cuando sucede un error mientras estás desarrollando los requests llegan en blanco, sin ningún tipo de información de que sucedió. Si no sabes que tienes que ir a ver el archivo storage/logs/laravel.log, pasarás un mal rato.
Los Logs de los queries están desactivados por defecto. Entiendo que en producción no se requiera logear los queryes a la base de datos, pero en desarrollo si es necesario, Laravel desactiva estos logs y es un tanto molesto cuando sucede algún error o simplemente quieres ver el query que se generó.
Conclusiones
Como se puede notar, son pocas cosas las que me desagradan y por lo menos con respecto a los logs, es cuestión de configuración solamente. Aún no he utilizado todas las características del framework, ya que tengo poco menos de dos meses trabajando con Laravel.
Ya que estoy haciendo una API, no necesito la parte de los templates. Es por eso que en este post no hable al respecto. Ya les contaré cuando deploye a producción este proyecto, realmente tengo mucha curiosidad de ver como se desempeña. Actualmente la app móvil no utiliza backend, pero en los reportes de Apple veo que hay cerca de 50K sesiones diferentes, así que ya veremos como responde Laravel.
1Comentario
Excelente, Crysfel