Blog Tecnológico de Clever

Web Personal de Clever Flores relacionado a la WEB 2.0. (JavaScript, RIA, XUL y Ajax), lenguajes de programación (Java, PHP, Ruby) y GNU/Linux por supuesto; hincha a morir del Software Libre.

Frameworks en PHP y su lógica de programación I

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

  1. 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