Codeigniter vs Symfony
Este verano me dedique expresamente a mejorar mi nivel de PHP, aunque desde hace años que utilizo clases mi nivel nunca llego al que tengo en C++. Nunca he utilizado patrones de diseño en PHP, tampoco me he preocupado sobre herencia…etc Mi código no era el típico código espagueti ya que utilizo PHP desde que puse Internet aproximadamente, creo que desde el año 2002 mas o menos, de hecho aun viven algunas de mis paginas cutres alojados en hosting gratuitos. Pero en fin, por decir algo estaba estancado en el PHP 4, de hecho la pagina www.renovarcarnet.com esta escrita sobre el PHP 4 y creo que ha llegado la hora del cambio…mas que nada por seguridad que por otra cosa.
Dada la magnitud del proyecto y el constante crecimiento ya no puedo desarrollar desde 0, así que empece a barajas opciones. Por ejemplo WordPress descarte casi enseguida, básicamente por la base de datos que tengo y sobre todo porque tendría que fabricar una plantilla bastante extensa, así como algún que otro plugin. Necesito algo mas flexible, pero ojo la opción podria ser perfectamente valida.
Así que empece a mirar frameworks, al principio me gusto Symfony así que me puse manos a la obra para aprenderlo, básicamente llegue al día 10 o así de Jobeet y me volví loco con Doctrine, YAML, consola de comandos (y eso que soy de linux desde unos años). En fin un lió, monte un par de maquinas virtuales limpias, instalar LAMP, instalar symfony, configurar, editar ficheros YAML, Doctrine, comandos y 10 lineas de código… vamos un poco coñazo por llamarlo así. Hasta que llegas a tocar algo de código pueden pasar días, eso si, con tres lineas de código tenias media pagina montada, pero te ponías a revisar que leches has hecho…
El siguiente paso es escribir mi propio framework, que por cierto podeis encontrar en mi github, por llamarlo así, me puse a reinventar la rueda. Pero ciertamente la experiencia ha sido bastante divertida. Mi “Simple Framework” esta basado en un manual ingles, pero esta completamente reescrita y modificada, utiliza por ejemplo el ezSQL de Justin Vincent, y la modificare mas, ya que es muy entretenido, hasta es posible que crea mi propio tutorial. También empece a mirar la certificación ZEND de PHP 5.3 que la recomiendo a todos, muy útil para coger las buenas practicas.
Aun así seguía buscando algo potente, un buen punto de partida para empezar a desarrollar y encontre por casualidad Codeigniter en su versión 2.0.3 que solo soporta PHP 5. Empece con los dos tutoriales para ver como es, y realmente me bastaron para quedarme con el. Vamos en comparación con Symfony, he necesitado 1 hora para entender como funciona y empezar con un pequeño proyecto de prueba con ayuda de documentación. Después de dos semanas he aprendido a utilizar la mayoría de las librerías y helpers. De hecho lo gracioso de que, realmente no necesitas utilizarlos. Pero por ejemplo la clase de paginación, subida de archivos y manipulación de imagenes me han sorprendido por la potencia y facilidad de uso.
Así a simple vista pensaba que necesitaría unos 6 meses para implantar el nuevo Framework en al menos 2 paginas que tengo en mente, pero creo que ese tiempo se reducirá a unos 2 meses. De hecho liberare una plantilla de BackEnd para Codeigniter en un par de semanas. Totalmente documentada y con licencia MIT. Y me sobrara tiempo para sacarme la Certificación ZEND de PHP
Así que en resumen, si no estas familiarizado con los Frameworks, mi consejo es que primero aprendas muy bien como funciona el Modelo Vista Controlador y después dedica algo de tiempo a Codeigniter., fácil de utilizar, potente y rápido. Después si necesitas algo mas complejo puedes ir a ZEND o Symfony2, aunque claro esta que te puedes quedar perfectamente con el primero. Yo de momento me quedo con el Codeigniter, después ya veré, pero seguramente me mudare a JAVA (en general)


a Java? menudo lío, tío. En mi empresa estamos desarrollando un proyecto bajo Java con los siguientes frameworks: Spring Frameworks, Struts, las librerías Hibernate, decorator y displaytag y te juro que haría cualquier cosa por que estuviera hecho en CodeIgniter o Symfony
Hombre, se JAVA en general, hice alguna tontería típica de la facultad. Sin embargo me gustaría conocer las dos cosas en profundidad. Siempre algo se adapta mejor a algo en particular. No quiero ser el típico que defienda JSP o PHP a muerte hasta que vea como va la cosa. Ahora por ejemplo odio profundamente GIT y probare SVN antes de echar las pestes jajaja
Que curioso pase por lo mismo el año pasado, me tope con symfony, lei algunas presentaciones y dije uff este fw es genial, luego cuando empece a seguir los tutos solo llegue hasta el dia 5 o 6 no recuerdo, luego empece a buscar otros frameworks hasta que me tope con CI, lei la documentacion en ingles y era muy facil de entender(no domino el ingles), y apesar de solo sabia hacer un hola mundo en php, pero en realidad un muy buen fw, tambien he estado intentando aprender J2EE pero como que es muy pesadito, pero bueno ya aprendere.
Saludos!
Pues si, Symfony podría ser terriblemente bueno, pero el tiempo de aprendizaje es alto, unido a que no todos los hosting son compatibles me echan un poco hacia atrás. Ademas el uso de consola… merece una mención a parte. Soy usuario de linux, pero aprender un montón de nuevos comandos para Git, Symfony… me toca un poco los cojones así como constantemente consultar la documentación para cualquier chorada…
También después de un par de meses puedo decir, que Codeigniter internamente tiene algún “legacy code”, vamos que no es PHP 5 100%, sin embargo la calidad de código esta fuera de ninguna duda. Creo que al menos el código de Loader, podrían simplificar muchísimo utilizando la función __autoload();
Tampoco me emociona mucho que la DB se pueda llamar desde el controller, asi como la librería de validación con algunas funciones solo funcione desde ahí…
Pero oye, es un FW impresionante… sobre todo para los proyectos pequeños y medianos, funciona a la perfección desde casi la totalidad de los hosting compartidos y la documentación es simplemente excelente y no te obligan a comprar ningún tipo de libro para aprenderlo. Ademas no os imagináis, la simpleza del CORE, algún día escribiré como funciona… por ello es tan rápido.
Un saludo Agustín y gracias por dar tu opinión.