Eligiendo un framework de PHP
Martes, agosto 11th, 2009
Reconozco que, aunque mi nivel de programación en PHP no es nada extraordinario, he ido recogiendo frutos de la experiencia a lo largo de todo este tiempo. Me han hecho cambiar mi forma de pensar a la hora de escupir escribir código, pero no pensé que lo fuera a hacer tanto como para utilizar un framework.
¿Que qué es un framework? Para aquellos que no lo entiendan, y para no recurrir a definiciones wikipedistas, podríamos imaginarlo como una capa (conjunto de librerías, clases, métodos…) aplicada a un lenguaje que nos ayuda a realizar tareas repetitivas de manera mucho más sencilla y, porque no, limpia (véase MVC).
De acuerdo, quizá ustedes no lo vean tan extraño eso de utilizar un framework de PHP; no en vano, hay un buen número de personas que usan jQuery como su framework de Javascript (como un servidor), por no nombrar otros tantos. Sin embargo, yo siempre había sido una persona bastante escéptica con éstos para mi lenguaje favorito: ¿No supondrá demasiada carga gratuita? ¿Costará demasiado aprenderlo? ¿Realmente vale la pena?
Es cierto que hace bastante que escuché sobre CodeIgniter, pero nunca me puse a investigar hasta hace unas pocas semanas, cuando descubrí un nuevo mundo. Por supuesto, no es el único framework que existe, y me estuve mirando la documentación (a la vez que comparativas) de otros (que no todos) como:
- Zend framework, el framework “oficial” por excelencia de PHP. La curva de aprendizaje no es muy favorable y los benchmarks tampoco (aunque ese post es algo antiguo, para nuestro querido Zend no parece haber cambiado demasiado, según he podido leer – que no comprobar -). No me gustaba el código resultante.
- CakePHP es otro de los grandes conocidos, aunque no demasiado flexible en algunos momentos (y esto ya lo comprobé personalmente). Es más fácil que Zend y con un código resultante más que legible, sin embargo, no me acabó de gustar por el tema de la rigidez. Aquí hay alguien que apoya a ambos con buenas razones.
- Symfony, que empecé a conocer por queru, ha sido de los que menos me han convencido por su pobre rendimiento y su dificultad para aprender, aunque es bastante completo. Quizá debería de indagar algo más.
- Kohana, que me sugirió Antonio Pardo, me ha dejado completamente impresionado. Es similar a CodeIgniter en cuanto a programación y aprovecha mucho más la potencia de PHP5 (ya que no soporta PHP4, como hace CodeIgniter). Tiene módulos bastante interesantes y creo que eso se traduce en menor tiempo de desarrollo. Sin embargo, en el foro de CodeIgniter encontré una buena opinión (al menos bastante objetiva) que explica que Kohana puede ser bastante prometedor, pero que debería cambiar su rumbo, básicamente.
- Yii, poco conocido respecto a sus competidores, jovencito pero con un crecimiento exponencial. La gente habla bien de él y desde luego su trabajo lo hace. El rendimiento es muy bueno y es todo OOP, además de tener actualizaciones recientes. Por contra, que sea tan joven significa que es aún algo inmaduro, pero me mantendré al día sobre este framework, porque tiene una pinta muy interesante.
También vi algunos otros pero que no me acabaron de llenar. En cualquiera de los casos, todos vienen provistos de una implementación, más fácil o más difícil, de MVC para tus proyectos. Quizá una de las razones más importantes que me hicieron pensar en framework (hasta entonces yo siempre había programado código spaghetti).
VEREDICTO
Para mí, el ganador final es CodeIgniter: fuerte y fiel comunidad, documentación excelente, curva de aprendizaje plana (perfecto para novatos en MVC, ya que es fácilmente implementable), muy extensible, pocos requisitos de parte del servidor (funciona incluso con PHP4 — ¿ventaja a estas alturas?) y soporte para una gran cantidad de base de datos (usando ActiveRecord), entre las principales razones. Sin embargo, hay ciertos puntos en los que cojea:
- No tiene soporte AJAX incorporado. Quizá esto para algunos suponga un problema, aunque para mí se traduce en mayor flexibilidad (aunque algún helper no habría estado de más).
- No tiene módulo auth, algo bastante básico (registro, login, recuperar contraseña…). De acuerdo que la comunidad aporta, pero esto me parece algo imperdonable. Deberían de incorporar uno oficialmente YA.
- Tampoco pasarelas de pago, mapas (Google Maps)… y así podría seguir. De acuerdo que dejaría de ser tan ligero de peso, aunque en el rendimiento no afectaría apenas (si no lo necesitas, no lo cargues).
- La última versión (1.7.1) vio la luz en febrero de este año. Un largo tiempo sin actualizar, en efecto. Esto puede ser bueno, ya que significa que no hay ningún bug grave que corregir, pero evidentemente también es MUY negativo: gran falta de innovación. Podrían empezar por sacar una 1.8 que arreglara las dos necesidades fundamentales que agregaba arriba.
Afortunadamente, CodeIgniter es fácilmente extensible y podemos arreglarlo fácilmente con clases o librerías que queramos, aunque no deja de ser un mal apaño.
En cualquier caso esto no deja de ser una opinión personal y cualquiera puede estar de acuerdo o no. Hay que tener en cuenta que mi punto de vista con frameworks no está demasiado maduro, y no es por falta de información, si no por experiencia. CodeIgniter me ha dado una buena bienvenida, al igual que a todos los que empezamos a trabajar con él, pero eso no quita que en un futuro elija otro con más posibilidades.









