CodeIgniter es un framework de desarrollo web en PHP. Hace poco lo he estado usando para un par de proyectos muy pequeños, y he sacado algunas conclusiones.
En su sitio web se describe como un framework con:
- bajo uso de recursos
- rendimiento excepcional
- altamente compatible con gran variedad de versiones y configuraciones de PHP
- y algunas cosas más...
Lo que describe, me creo que es verdad (no me he puesto a hacer pruebas de rendimiento), pero tiene un precio: CodeIgniter sacrifica la facilidad de escribir código en favor de las cualidades anteriormente citadas. Que nadie se espere que CodeIgniter sirva como un Ruby on Rails en versión PHP. Para eso están CakePHP u otros. En lugar de esto, quien lo elija debe hacerlo porque tiene que trabajar en un entorno que realmente (pero de verdad) requiera el rendimiento/compatibilidad descrito arriba.
Nada más empezar a desarrollar la primera aplicación, apareció la primera "cosa extraña" de CodeIgniter: no hay una convención para "layouts", código HTML común a varias páginas y que conforma el esqueleto al que se añade el contenido. Para añadirlos encontré un par de soluciones, ambas basadas en el uso de los hooks que el CodeIgniter provee para alterar el flujo de la ejecución:
Lo siguiente que me extrañó fué no se puede acceder a los argumentos de un GET. CodeIgniter los elimina en nombre de la seguridad o no sé que otra estupidez. Esto me parece un defecto muy gordo y que no se sostiene de ninguna forma, ya que ni siquiera sirve como sacrificio para conseguir rendimiento o algo así. Por el contrario, más bien se gasta más tiempo eliminándolos que no haciéndolo.
En un hilo de los foros oficiales expongo (en inglés) mi punto de vista al respecto del trato de los argumentos GET. En el mismo hilo, un contertulio ofrece una solución al problema, de nuevo apoyada en los "hooks" de CodeIgniter.
Lo siguiente que me encontré fué la ausencia de una implementación de Active Record. Aunque en la documentación se pretende llamar como tal a su biblioteca de acceso a la base de datos, la realidad es bien distinta. CodeIgniter no proporciona una abstracción de la base de datos más allá de la propocionada por bibliotecas tradicionales, tales como ADOdb (y ni eso, porque esta librería ya incorpora Active Record). Ya puede decir la documentación lo que quiera.
Otro detallito es que la base de datos, los modelos, los "helpers" y las bibliotecas varias hay que cargarlas explícitamente cada vez que se vayan a usar, lo cual en un proyecto mediano puede empezar a tocar la moral, y en uno grande no quiero ni pensarlo. También vi que algunas cosas como, por ejemplo, cargar la base de datos en el constructor del modelo, directamente no funcionan. Esto puede hacer que más de uno se tire de los pelos en cuanto el proyecto crezca un poco.
Algún detallito más había, pero los de arriba me parecen los más sobresalientes. Todo lo descrito se debe a que el framework está orientado a tener el máximo rendimiento en la mayor variedad posible de entornos. Todo, excepto lo del GET, que me parece absurdo, pero bueno, por lo menos se puede arreglar.
En definitiva, si realmente tienes unos recursos muy limitados, CodeIgniter es una opción a barajar. En cualquier otro caso, busca otra opción, que hay bastantes disponibles para PHP.
Últimos artículos comentados