En estos últimos meses estuve programando en PHP y familiarizandome con los frameworks existentes para este amigable lenguaje. En terminos simples un framework es una estructura lógica de programación que nos ayudará a crear mejores programas; es como cuando se quiere construir un edificio si no hace un buen
estudio de suelos y se construye buenos cimientos el edificio nunca
podrá tener mas de dos pisos o lo que es peor; pueda que se venga abajo
en el transcurso del tiempo.
De mi experiencia personal he visto que
muchas empresas demandan soluciones rápidas en aplicaciones web; sin
embargo los programadores por estar siempre contra el tiempo, a veces
no planificamos la construcción de esta estructura. El resultado es que
hay muchas aplicaciones web que pueden funcionar y parecer bonitas por
fuera; pero por dentro son un caos total.
Un framework trata de
mitigar esta situación y ofrece al programador una forma ordenada de
trabajo brindándole las siguientes funcionalidades:
1.- Separación de capas lógicas (MVC) con un controlador frontal.
2.- Capas de Routing, Entrega (Dispatch), Templates, Validación, Test, Caching, etc.
3.- Un sistema de componentes que le permitirá construir todo tipo de aplicaciones, agregar nuevas funcionalidades y extender las existentes
4.- Librerías , módulos y/o sistema de plugins que simplificarán las tareas de programación y reducirán enormemente el trabajo repetitivo
-
Separación de capas lógicas (MVC) con un controlador frontal
.
Uno de los principales problemas de los programas hechos por novatos es
la mezcla de las capas lógicas de la apliación (a lo Dreamweaver,
creyendo que desarrollar en web es como desarrollar en Visual Basic 6).
El modelo MVC
busca dividir una aplicación en 3 capas bien identificadas que son Modelo, Vista y Controlador.
-
El Modelo es la capa de dominio donde reside la lógica de negocio, y donde
se trabaja con la base de datos, normalmente un framework implementa un
sistema de ORM (Mapeo de Objetos Relacionales) donde las tablas son
representados como clases de lenguaje, con los campos como variables de
clase, métodos para definición y obtención de valores y relaciones con
otras tablas; evitando el uso de un SQL específico para el programador,
gestionando el ORM las sentencias SQL en forma interna. De esta forma
se logra que el framework pueda trabajar con cualquier base de datos y
a la par tener un sistema homogéneo de objetos del lenguaje. Ej:
$cliente = new Cliente(); //Obtención del objeto de la tabla clientes
$cliente->name = "pepito";
$cliente->lastname = "perez";
$cliente->email = "pepitoperez@gmail.com";
$cliente->save(); // El ORM se encarga de generar la sentencia Insert para la base de datos
-
La Vista es la capa donde se interactúa con el usuario, normalmente es la capa visible de la aplicación y que incluye las páginas html, menús, formularios, reportes, está está íntimamante ligado al diseño y flujo de la aplicación de acuerdo a los eventos de navegación y javascript ejecutados por el usuario, el objetivo principal de esta capa es brindar a los programadores y diseñadores la facilidad de poder modificar el aspecto de las páginas sin necesidad de tocar el código del módelo o código de la capa de control
-
La capa de control es la capa pegamento entre la capa del Modelo y la capa Vista; desde el controlador se invocan los objetos del dominio y se crean las variables (normalmente un motor de template), que podrán ser usadas en la Vista también se procesan las peticiones, se fuiltran las variables y se controla la seguridad de la aplicación esta capa es pura de programación en PHP
Sistema de Controlador Frontal
que define un embudo (index.php) para que todas las peticiones pasen obligatoriamente por ahi, de esta forma se definen las rutas limpias y se evitan los problemas de control y seguridad asociados al acceso directo a los scripts