Archivo

Archive for 30 septiembre 2013

Stitch 626 Framework

NOTA: el nombre del framework se debe a que me encanta este personaje, pero sólo lo utilizaré mientras esté en desarrollo por posibles problemas de copyright 😛

Este proyecto será un framework de PHP que nace de la curiosidad por aprender PHP y como funcionan los grandes frameworks (como Symfony, Laravel…), además de implementar mis propias ideas, pero siempre orientado a pequeños proyectos.

Los grandes frameworks de PHP son muy poderosos, pero su curva de aprendizaje puede ser exponencial debido por ejemplo:

  • A que usan varios lenguajes dentro del mismo, uno para plantillas, otro para el ORM, además de la particularidades de su propio código PHP,  las posibles limitaciones o dificultades que podrían suponer la interconexión de cada componente.
  • La magia interna que poseen, que al principio es estupenda pero a la larga, puede impedir entender como funciona y dificultar la detección de posibles errores.

Por otra parte éstos frameworks fueron creados por alguien que también empezó de cero (o no) alguna vez, implementando sus ideas y lo que creía que era mejor en su momento. Luego éstas criaturas fueron creciendo hasta convertirse en lo que son hoy, con el apoyo de las comunidades de adeptos obtenida y de un posible equipo de trabajo. Mi framework intenta seguir una filosofía “RISC”, es decir, hacer pequeñas cosas combinables para hacer cosas más grandes y ser lo más versátil posible, usar sólo PHP para facilitar en la medida de lo posible tareas comunes y repetitivas.

Su estructura es MVC (Model View Controller), aunque una versión fue HMVC (Hierarchical Model View Controller) éste último esquema se compone de pequeñas aplicaciones que cada una de ellas usa un patrón MVC y pueden ser independientes unas de otras. Ese esquema no terminó de convencerme porque aunque parece ser el más útil, sobre todo en proyectos gigantes dada la posible reutilización de éstas pequeñas aplicaciones, creo que excede de  la intención de éste framework, por lo que decidí cambiar a MVC de nuevo.

El único punto de entrada a la aplicación es el controlador frontal (app.php), cuando se introduce una URL el controlador frontal carga el KERNEL y llama al ROUTER el cual parsea dicha URL y carga el fichero de rutas para comparar dicha url con las rutas y así buscar que controlador y que acción debe ejecutar.

Dentro del KERNEL….

El ROUTER he decidido hacerlo autónomo, es decir, que no dependa o lo haga lo menos posible de .htaccess o del servidor, aunque son necesarios para las urls amigables.

El MODELO, esá basado en un solo archivo el cual contienen la definición de la tabla y los métodos asociados a dicha tabla. Este esquema responde a una cuestión de simplicidad, es mas sencillo buscar en un solo archivo que en 2 o en 3. La definición de la tabla se realizará mediante anotaciones de comentarios con un comando especial y luego se definirá con comandos SQL estandar.

Por otra parte las librerías se basaran en un query builder que contempla tanto funciones de consulta, edición y construcción de tablas

Los FORMS se integrarán en las vistas, obedeciendo también a un criterio de simplicidad y minimización de archivos, pero cumpliendo criterios de reusabilidad. Se implementará con un clase abstracta para no tener que instanciar ninguna clase dentro de las vistas.

Los GRIDS siguen definiéndose dentro del controlador, en lugar de en las vistas como sus hermanos FORMS, esto se debe a a varios factores:

  • Los grids necesitan de un paginador basado en la URL y desde la vista no hay control sobre la URL o sería muy complejo de implementar, concepto contrario a este framework.
  • También necesitan acceso al modelo que también ha de ser paginado.
Categorías:Desarrollo, PHP, Proyectos