¿Codeigniter-Reactor + esteroides?
Es algo que todavía no llego a entender ni asimilar. He pasado la mayor parte de la tarde para configurar la nueva versión 2.0 de CodeIgniter-Reactor con varias librerías que, para mi forma de desarrollar, son indispensables en cualquier framework de programación orientado a web:
- HMVC: Gracias a la librería de Wiredesignz podemos ordenar nuestro código en módulos y simplificar la lógica de la aplicación.
- ModulesModule: Ahora que todo será un módulo, no vendría mal un módulo encargado de ejecutar las tareas más comunes de los módulos (instalar, desinstalar, actualizar...). Un módulo de módulos.
- SettingsModule: No me gusta cargar la configuración desde ficheros config/*, por comodidad y para que el usuario pueda cambiar cualquier parámetro ajustable de una aplicación, prefiero hacerlo en base de datos y cachearlo a disco si es necesario. Me quedo con la librería de PyroCMS.
- ThemesModule: Otra característica imprescindible sería tener una aplicación themeable y que desde un interfaz de administración se pueda cambiar tranquilamente el aspecto de la misma. Para ello podemos hacer uso de este módulo capaz de instalar y desinstalar themes.
- TemplateLibrary y TagsLibrary: Una vez hemos decidido hacer la aplicación modular y themeable siguiendo el patrón MVC, un buen lenguaje de template para que los diseñadores no se vuelvan locos con el lenguaje dinámico sería un punto más.
- MigrationsLibrary: Una vez lo pruebas se convierte en musthave. Se trata de una librería para hacer migraciones de versiones en base de datos. Gestiona los cambios entre versiones de forma sencilla.
Como podéis ver siguiendo los enlaces, casi todo lo necesario para montar el esquema inicial de un framework PHP decente está en los repositorios de Phil Sturgeon (bitbucket y github). Su PyroCMS cuenta con todas estas características pero tiene muchas otras librerías que no son necesarias -a mi modo de ver- para tomarlo como base para cualquier otro tipo de proyecto.
Demasiado complejo de ensamblar, una vez he conseguido hacerlo funcionar más o menos todo ya no tengo ganas de empezar a programar la aplicación que tenía en mente. ¿Por qué no hay *nada* con todas esas funciones de serie en PHP?. Si, ya sé que con Ruby on Rails o Django hubiera tenido todas estas características -y más- en un par de comandos, pero tenía que desengañarme.
En este sentido PHP sigue estando tan verde como hace años, me hace perder demasiado tiempo aún conociendo la estructura del lenguaje. Todos sabemos como es la curva de aprendizaje al principio, pero -aunque duela- ha llegado el momento de invertir en otra cosa. Shame on me?
Comentarios
De hecho es una de las pegas de algunos frameworks muy serios en Perl (como Catalyst), que ha propiciado en surgimiento de propuestas muy potentes y sin tanta dependencia (como http://perldancer.org/ o, más al extremo, http://www.mojolicious.org/).
Imagino que si dominas el lenguaje, que en el caso de PHP es más bien el API y las particularidades "raras" que han ido añadiendo desde PHP 5.2 en adelante, te puede compensar meterte en un embolao como el que describes. Pero también es verdad que hay gustos para todo -- ¿lleva ya servidor de desarrollo "de casa"? ;)
Eso me hace pensar en la dificultad de adaptación a otros entornos y a veces me hace retroceder un par de pasos. Espero que me sirvan para tomar carrerilla, porque la decisión -visto lo de hoy- ya está tomada, me apetece demasiado montar en pony :P.
Me podrías comentar, superficialmente, como hiciste andar ModulesModule.
está la librería module
el modules/module
pero no comprendo muy bien como funciona.
Gracias.
Aún está medio en pañales pero a lo mejor se trata de la idea que andabas buscando. ;) Vamos a ver cómo evoluciona. Saludos
@julian: Si, lo sigo bastante de cerca, es una especie de "oil" (fuelphp) pero todavía le faltan "sparks". Habrá que seguirlo de cerca. Gracias por el apunte.