LegoBox como ya sabran es un framework PHP desarrollado por mi, la idea tras su desarrollo era no depender de otros frameworks como Zend o Symfony, y ademas contar con un poder similar.
Antes de continuar les invito a leer el articulo anterior sobre LegoBox.
http://evilnapsis.com/2015/05/28/introduccion-a-legobox/
Tambien vamos a descargar la version 3.6 de LegoBox, ojo por que ya existe una version mas nueva, pero aun esta en pruebas.
LegoBox 3.6: http://github.com/evilnapsis/legobox
Estructura
Vamos a hablar sobre la estructura en la que esta conformada esta version y tambien hablaremos sobre aquellos archivos importantes.
- core/
- controller/
- Action.php
- Bootload.php
- Cookie.php
- Core.php
- Database.php
- Lb.php
- Model.php
- Session.php
- View.php
- modules/
- index/
- action/
- boot/
- model/
- res/
- view/
- autoload.php
- init.php
- superboot.php
- index/
- autoload.php
- controller/
- res/
Core
El nucleo de legobox 3.6 esta compuesto en 2,controller y modules.
En controller esta todo lo relacionado con el funcionamiento interno de legobox 3.6 y en modules esta todo lo relacionado con la aplicacion o sistema que estemos desarrollando.
Controller
Cada uno de los archivos encontrados en la carpeta core/controller hacen una tarea especifica, sin embargo describiremos cada tarea mas adelante.
Modules
Modules contiene el codigo de la aplicacion en desarrollo, aqui existe una subestructura de directorios compuesta de la siguiente manera:
- modulo (miapp/)
- Acciones (action/)
- Nombre de la accion en carpeta ( miaccion/)
- Codigo de la accion (action-default.php)
- Nombre de la accion en carpeta ( miaccion/)
- Codigos de inicio (boot/)
- Nombre de la vista en carpeta (mivista/)
- Codigo que se ejecutara al inicio (boot-default.php)
- Nombre de la vista en carpeta (mivista/)
- Modelo de la base de datos (model/)
- Archivos que simulan una entidad de la base de datos (TableData.php)
- Vistas (view/)
- Nombre de la vista en carpeta (mivista/)
- Codigo de la vista (widget-default.php)
- Layout por defecto (layout.php)
- Nombre de la vista en carpeta (mivista/)
- Autoload del modulo (autoload.php)
- Inicializador del modulo (init.php)
- Superboot (superboot.php)
- Acciones (action/)
Acciones
Las acciones se ejecutan en base al parametro GET action, son muy similares a las vistas, sin embargo estas no ejecutan un layout por lo que solo ejecutan codigo sin mostrar una vista.
Codigos de Inicio
Los codigos de inicio o boots son codigos que se ejecutan primero al cargar una vista, puede usarse para verificar permisos o precargar datos , etc.
Modelo de la base de datos
En legobox 3.6 se manejan un archivo por cada tabla, estos archivos tienen la nomenclatura (Nombre de la Tabla)Data.php, donde Nombre de la tabla se sustituye de la siguiente manera, UserData.php, PostData.php, …, dependiendo del nombre de la tabla.
Se puede obserbar el uso del formato CamelCase, por lo tanto si el nombre de la tabla esta compuesto por 2 palabras entonces el modelo seria: UserTypeData.php, UserPostData.php.
Mas adelante tendremos un apartado sobre la contruccion de los modelos.
Vistas
Las vistas son la Joya de la corona, son las pantallas que se mostraran, regida por el parametro GET[“view”]
Layouts
Los layouts son simples plantillas para evitar cargar todo el codigo en las Vistas, se usa el layout para precargar javascripts, css y el codigo base, ideal para implementar los paneles de administracion.
Autoload del modulo
Se encarga de precargar las clases necesarias dentro del modulo en cuestion, para no tener que estar incluyendo nada.
Inicializador del modulo
Es el encargado de cargar los boots, superboot, views, layout y actions.
Superboot
Contiene un codigo que se ejecuta en todas las vistas sin excepcion.
Secuencia de Arranque
La secuencia de arranque de legobox es la siguiente
Todo empieza en el archivo index.php de raiz de la aplicaciones.
Cargar el Core Autoload
include “core/autoload.php”;
Instancia Lb
$lb = new Lb();
$lb->loadModule(“index”);
Aqui le decimos al framework que modulo vamos a cargar.
Cargar el modulo
En base al modulo que se cargara se ejecuta el inicializador del modulo core/modules/nombre del modulo/init.php
El inicializador del modulo carga lo siguiente:
- Si es una vista
- Se obtiene el valor GET[“view”] para determinar la vista
- Se carga el superboot
- Despues el boot correspondiente a la vista
- El layout
- Dentro del layout se carga la vista
- Si es un action o accion
- Se obtiene el valor GET[“action”]
- Se carga el action correspondiente
Conclusion
LegoBox 3.6 no es el framework perfecto, pero si esta dotado de cierta simplicidad que hace que desarrolles software rapidamente, esa simplicidad que ayuda sobre todo a poder hackearlo y adaptarlo a tus necesidades.
En un siguiente pos hablare mas sobre legobox.