Estado del arte

Actualmente hay un listado bastante extenso de frameworks realizados en PHP. Cada día aparecen nuevos y dejan de usarse otros. Nosotros vamos a ver un pequeño listado de los que más se usan actualmente:

No vamos a analizar cada uno de ellos, pero sí vamos a estudiar qué nos proporcionan tres de los frameworks más utilizados actualmente: **Symfony**, **CodeIgniter**, y **CakePHP**. De forma conjunta nos proporcionan varias funcionalidades como son:

  • Permiten crear modelos unidos a una fuente de datos, visualizar contenido en vistas y crear controladores que monitorizan las acciones del usuario que actualizan los modelos y las vistas.

  • Usan una estructura de carpetas que separan el núcleo central del sistema de los componentes de nuestra aplicación.

  • Usan ficheros de configuración para ayudarnos a gestionar datos importantes de la aplicación como la localización de la base datos, URLs amigables, sesiones y demás.
  • Usan un controlador central que captura toda la navegación del usuario. Si el usuario pulsa en un enlace para abrir /libros/ver/3 , se llamará al método ver() del controlador libros, con el ID igual al 3 que pasaremos al modelo para obtener los datos de dicho libro.

  • Nos permiten extender el núcleo del sistema y construir nuestras propias librerías y helpers.

Y más concretamente ** ¿qué nos ofrece CodeIgniter?**

  • Curva de de aprendizaje baja: no requiere una gran experiencia en patrones de diseño, tan sólo conceptos básicos de orientación a objetos.

  • Patrones: tiene implementado por defecto el patrón MVC y Singleton. Respecto al patrón MVC no hay que implementar todas las capas de forma estricta (sólo el controlador y la vista). El modelo es similar al patrón DAO.

  • Rápido de configurar: tan sólo hay que modificar varios ficheros de configuración y el framework ya estará disponible para escribir nuestra aplicación.

  • Rápido: es uno de los frameworks más rápidos de todos los utilizados actualmente ya que tiene un núcleo muy sencillo y un bajo acoplamiento entre los componentes del sistema.

  • Adaptable: es muy fácil de mejorar o adaptar, ya que, proporciona un gran listado de librerías.

  • Compatible con varios entornos: podemos establecer varios entornos de configuración (desarrollo, pruebas, preproducción, producción, etc.) de forma sencilla.

  • Se puede integrar con otros frameworks.

  • Muy buena documentación y una comunidad muy activa.

  • Muy testeado: debido a que lo desarrolla una empresa y crea aplicaciones con ese framework para sus clientes.

  • URL amigables: internamente proporciona una serie de librerías para proporcionar "urls amigables" optimizadas para las buscadores.

  • Validación de formularios: librería de validación de formularios mediante reglas.

  • Seguridad y filtrado XSS: incorpora una capa de seguridad y funciones para filtrar toda la información que proviene del usuario.

  • Caché: posibilidad de cachear partes o páginas enteras de nuestra aplicación.

  • Gestión avanzada de sesiones: reemplaza la sesiones nativas de PHP proporcionando una funcionalidad avanzada para las sesiones.

  • Benchmarking: podemos visualizar de forma sencilla el consumo de memoria, tiempo de ejecución, etc de cualquier módulo de nuestra aplicación.

  • Clase para pruebas unitarias: nos proporciona una clase sencilla para crear pruebas unitarias dentro de nuestra aplicación.

  • Un gran paquete de librerías y helpers.

Pero viendo lo que nos ofrecen otros frameworks como Symfony y CakePHP debemos saber que **NO** nos ofrece CodeIgniter:

  • No disponemos de herramientas de líneas de comandos (estilo PEAR) que generen código de forma automática ni código SQL (ORM).
  • No genera una estructura básica para operaciones CRUD para facilitar la administración de la aplicación.
  • No genera relaciones mágicas (M:M, 1:M,...) entre las tablas de la base de datos.

Aunque gracias a ser un framework tan sencillo estas funcionalidades se pueden añadir como extras dentro del framework de forma sencilla.

Después de analizar que nos ofrece y que no CodeIgniter, entremos de lleno en el estudio del framework.

results matching ""

    No results matching ""