Comparatíva de frameworks en PHP

por Óscar Antón el a las

Una comparativa de varios frameworks en PHP que he estado usando durante los últimos años, en este artículo repasamos funcionalidades, rendimiento, arquitectura y otros aspectos importantes, con una grata sorpresa final.

Entre ellos veremos: Yii, Prado, Code Igniter, CackePHP y Fat Free Framework.

Una comparativa de varios frameworks en PHP que he estado usando durante los últimos años, en este artículo repasamos funcionalidades, rendimiento, arquitectura y otros aspectos importantes, con una grata sorpresa final.', '

Podeis consultar el siguiente artículo relacionado, una Comparatíva de Frameworks PHP 5.3 con las tendencias de los últimos años (esperemos que pronto la mayoría de servidores adopten la versión 5.3 de PHP que día a día va ganando terreno).

En este artículo nos vamos a centrar en varios frameworks de PHP, algunos de ellos los he utilizado en varias aplicaciones durante los últimos 4 años, otros los he estado investigando durante este tiempo para ver la evolución de las arquitecturas de software en PHP.

Hace unos años solía desarrollar en .NET o Java, en parte por que desarrollaba para multinaciones o grandes grupos de desarrolladores y en parte por las ventajas de utilizar lenguajes orientados a objetos y patrones de diseño de software, de todos modos siempre he tenido el ojo pegado a PHP, pero fue a partir de su versión 5 cuando me empezé a interesar por él por varios motivos:

  1. Es opensource y facil de utilizar.
  2. Permite mucha flexibilidad a la hora de desarrollar.
  3. A partir de la versión 5 mejoró mucho su orientación a objetos.
  4. Los frameworks de PHP cada vez son mas profesionales.

 

Lo que siempre me tiró para atrás con PHP es lo mismo que me tiraba para atras de ASP, el maldito codigo spaguetti, como no tuvieses muy estructurada la aplicación te encontrabas con decenas de ficheros PHP si orden que mezclaban HTML con scripts de PHP y javascript, creando sitios webs muy dificiles de mantener.

Sin embargo con la llegada de frameworks como CakePHP, Prado, CodeIgniter, Yii, la cosa empezó a cambiar, podías contar con herramientas que realmente te facilitaban y estructuraban los proyectos para invertir mucho menos tiempo en desarrollar y a la vez ordenar todo el código para poder mantener aplicaciones de una forma realmente potente.

Paso a detallaros mis impresiones de varios de estos frameworks:

CakePHP: Lo utilizé en un proyecto hace cosa de 2 años, tiene una buena comunidad de desarrolladores, la documentación también es bastante buena y el framework es sencillo de utilizar, respeta el patrón MVC, pero lo que menos me gustó es el rendimiento, el Active Record es bastante lento cuando usas recursividad o relaciones entre tablas y el motor de plantillas tampoco me gustó demasiado. Al final decidi buscar otra opción, pero cuidado, el framework cumplió con el proyecto, el problema es que creo que el proyectos mas grandes (realizé un CRM muy sencillo) no daría la talla. Actualmente algunos de sus desarrolladores estan en un proyecto muy interesante llamado lithium, un intento por mejorar considerablemente los fallos de CakePHP, lo que he visto de lithium me ha gustado bastante, pero de momento no es una opción para un desarrollo en producción.

Prado: Prado me sorprendió gratamente, esta orientado a componentes reutilizables, fue diseñado basandose en varios conceptos de asp.net y tapestry, tiene una documentación magnifica y permite cierta escalabilidad en proyectos grandes, el rendimiento es bueno aunque el sistema de componentes hace que a veces baje cuando el numero de usuarios concurrentes es elevado. Al final utilizé este framework para crear CubensiX y los resultados han sido realmente buenos, el problema que tiene actualmente es que varios de sus desarrolladores emigraron a otro proyecto (Yii framework) y ahora mismo no tiene mucha actividad, ademas una aplicación con prado suele pesar mas de 20 MB y aunque en los tiempos que corren no hay mucho problema con esto puede suponer un problema si se usa en aplicaciones pequeñas.

Yii: Es el paso evolutivo de Prado, para mejorar el rendimiento, esta mas enfocado al patrón MVC, lo cierto es que es utiliza conceptos interesantes como los filtros, widgets (que reemplazan el modelo de componentes de Prado) y tiene un sistema de extensiones mantenido por una gran comunidad de desarrolladores, ademas utiliza APC para mejorar enormemente el rendimiento (Prado ya usaba APC pero de una forma mas casual), la documentación es magnifica y parece que el proyecto va viento en popa y tienen planeada una nueva versión para finales de 2011. El único inconveniente que le veo es que pesa un montón, mas de 10 MB que ocupa solo el framework, mas las extensiones que utilizes, mas tu aplicación, la cosa se puede poner en 40 MB si te despistas. Actualmente estoy valorando utilizarlo en la nueva versión de CubensiX pero me tira para atrás la cantidad de espacio que ocupa en disco, aunque lo recomiendo para aplicaciones grandes.

CodeIgniter: La gente habla bastante bien de él, la documentacion es buena y tiene un buen rendimiento, recientemente lo he usado en un proyecto y no me ha gustado demasiado, lo veo un poco tosco y cae en los mismos errores que el PHP tradicional (esta mas orientado a desarrolladores de PHP puro). De todos modos quizas le vuelva a dar una oportunidad en el futuro.

 

Fat-Free Framework: Una grata sorpresa, mientras la mayoría de los frameworks actuales abogan por cientos y cientos de funcionalidades, F3 (conocido como Fat-Free Framework) prefiere la simplicidad, pero una simplicidad elegante y con muchas funcionalidades que cubren las necesidades de cualquier desarrollador. Es un framework muy liviano ya que ocupa a penas 55 kb (incluyendo algunas librerias extra puede llegar a ocupar 200 kb), tanto que un blog de ejemplo que me he podido descargar de su repositorio a penas ocupa 154 kb. Tengo que probar aun su rendimiento (aunque por lo que he visto es muy rapido). Lo que si es cierto es que a partir de este sencillo framework puedes realizar aplicaciones en muy poco tiempo cubriendo rutas de Url, modelos, vistas, controladores, activerecord, tratamiento de imagenes, capchas y muchas mas características que lo hacen un serio rival ante estos otros titanes de las funcionalidades extra. Este es otro serio candidato para el nuevo CubensiX, actualmente estoy pensando en desarrollar un framework utilizando un fork de  F3 como core, la necesidad de hacer otro framework encima de F3 es que no esta muy orientado a objetos y a veces puedes perder el control de tu aplicación si no eres muy estricto en el desarrollo, pero el objetívo sería intentar seguir la tendencia minimalista de F3 para respetar su mayor acierto... la SIMPLICIDAD.

En resumen, actualmente PHP ya es una plataforma de desarrollo web muy madura, cada cual que elija el framework que se adapte a sus necesidades, yo recomiendo para proyectos de gran embergadura Yii y para proyectos mas pequeños F3 sin dudarlo, Prado tambien es una buena opción para aplicaciones medianas, seguido por CodeIgniter y CakePHP, me dejo en el tintero otros frameworks como Kohana, el interesante Synfony, el rápido DooPHP (aunque tiene algunos detractores) y tantos y tantos otros frameworks que existen actualmente, la elección al final la haceis vosotros.

En futuros artículos iré explicando mas conceptos interesantes sobre alguno de estos frameworks, hasta la proxima ;)

Podeis consultar el siguiente artículo relacionado, una Comparatíva de Frameworks PHP 5.3 con las tendencias de los últimos años (esperemos que pronto la mayoría de servidores adopten la versión 5.3 de PHP que día a día va ganando terreno).

facebook

twitter