Según el diccionario de Oxford, la palabra framework significa:
Una estructura básica que subyace a un sistema, concepto o texto.
Esto, enfocado al diseño de software, básicamente se refiere a un marco de trabajo que ofrece una estructura conceptual y tecnológica de soporte definido, normalmente módulos de software.
Típicamente, puede incluir soporte de programas, bibliotecas, y un lenguaje interpretado (scripts que faciliten el trabajo), entre otras herramientas, para así ayudar a desarrollar y unir los diferentes componentes de un proyecto.
Frameworks más populares en PHP
En los últimos años la cantidad de frameworks, no sólo para PHP, ha crecido bastante. Esto debido a la facilidad que éstos ofrecen a la hora de crear sistemas desde lo más simple, hasta sistemas cada vez más robustos.
Por obvias razones, los frameworks están diseñados Orientados a Objetos, y comúnmente usan el patrón de diseño MVC.
A pesar de la gran cantidad de frameworks que existen, un puñado de 5 o 6 son los que dominan más del 65% del ecosistema.
Yii es un framework orientado a objetos, software libre, de alto rendimiento basado en componentes.
Comenzó el 1 de enero de 2008, con el fin de solucionar algunos problemas con el framework PRADO.
La versión actual estable es la 1.1.15 y está liberada bajo es liberado bajo la licencia BSD.
Las características de Yii son las siguientes
- Patrón de diseño Modelo Vista Controlador (MVC).
- Database Access Objects (DAO), query builder, Active Record y migración de base de datos.
- Integración con jQuery.
- Entradas de Formulario y validacion.
- Widgets de Ajax, como autocompletado de campos de texto y demás.
- Soporte de Autenticación incorporado. Además soporta autorización via role-based access control (RBAC) jerarquico.
- Personalización de aspectos y temas.
- Generación compleja automática de WSDL, especificaciones y administración de peticiones Web service.
- Internacionalización y localización (I18N and L10N). Soporta traducciones, formato de fecha y hora, formato de números, y localización de la vista.
- Esquema de caching por capas. Soporta el cache de datos, cache de páginas, cache por fragmentos y contenido dinámico. El medio de almacenamiento del cache puede ser cambiado.
- El manejo de errores y logging. Los errores son manejados y personalizados, y los log de mensajes pueden ser categorizados, filtrados y movidos a diferentes destinos.
- Las medidas de seguridad incluyen la prevención cross-site scripting (XSS), prevención cross-site request forgery (CSRF), prevención de la manipulación de cookies, etc.
- Herramientas para pruebas unitarias y funcionales basados en PHPUnit y Selenium.
- Generación automática de codigo para el esqueleto de la aplicación, aplicaciones CRUD, etc.
- Generación de codigo por componentes de Yii y la herramienta por linea de comandos cumple con los estándares de XHTML.
- Cuidadosamente diseñado para trabajar bien con código de terceros. Por ejemplo, es posible usar el código de PHP o Zend Framework en una aplicación Yii.
Zend Framework (ZF) es un framework de código abierto para desarrollar aplicaciones web y servicios web con PHP 5.
En la estructura de los componentes de ZF, cada componente está construido con una baja dependencia de otros componentes. Esta arquitectura débilmente acoplada permite a los desarrolladores utilizar los componentes por separado.
- Todos sus componentes son completamente orientados a objetos, bajo PHP5
- Sus componentes son de baja dependencia
- MVC expandible, suporta el uso de layouts y templates
- Soporte de múltiples sistemas de bases de datos, incluyendo MariaDB, MySQL, Oracle, IBM DB2, Microsoft SQL Server, PostgreSQL, SQLite, and Informix Dynamic Server
- Composición y envío de correos, via mbox, Maildir, POP3 y IMAP4
- Sistema de cache flexible
CodeIgniter es un framework para aplicaciones web de código abierto para crear sitios web dinámicos con PHP.
Es desarrollado por la empresa EllisLab.
Su última versión estable es la 2.1.4, lanzada en julio de 2013 y utiliza PHP5 para funcionar.
- Es capaz de trabajar la mayoría de los entornos o servidores, incluso en sistemas de alojamiento compartido
- Configuración con apenas la edición de un archivo
- Es bastante menos rígido que otros frameworks
- El núcleo de CodeIgniter es bastante ligero
- La mayoría de los módulos o clases que ofrece se pueden cargar de manera opcional, sólo cuando se van a utilizar realmente
- La documentación de CodeIgniter es fácil de seguir y de asimilar, porque está escrita en modo de tutorial
CakePHP empezó en 2005, cuando Ruby On Rails estaba ganando popularidad y utiliza muchos de sus conceptos.
La última versión estable de CakePHP es la 2.4.6, lanzada en Julio de 2014.
Al igual que Ruby On Rails, CakePHP facilita al usuario la interacción con la base de datos mediante el uso de ActiveRecord. Además hace uso del patrón Modelo Vista Controlador.
- Compatible con PHP4 y PHP5
- CRUD de la base de datos integrado
- URLs amigables
- Sistema de plantillas rápido y flexible
- Ayudas para AJAX, Javascript, HTML, forms y más
- Trabaja en cualquier subdirectorio del sitio
- Validación integrada
- Scaffolding de las aplicaciones
- Access Control Lists
- Sintetización de datos
- Componentes de seguridad y sesión
Para empezar, separa la lógica de negocio, la lógica de servidor y la presentación de la aplicación web. Proporciona varias herramientas y clases encaminadas a reducir el tiempo de desarrollo de una aplicación web compleja. Además, automatiza las tareas más comunes, permitiendo al desarrollador dedicarse por completo a los aspectos específicos de cada aplicación.
Está desarrollado completamente en PHP 5.3.
Es compatible con la mayoría de gestores de bases de datos, como MySQL, PostgreSQL, Oracle y Microsoft SQL Server. Se puede ejecutar tanto en plataformas *nix (Unix, Linux, etc.) como en plataformas Windows.
Su última versión estable fue lanzada en mayo de 2014, la 2.4.5
Symfony fue diseñado para ajustarse a los siguientes requisitos:
- Fácil de instalar y configurar en la mayoría de plataformas (y con la garantía de que funciona correctamente en los sistemas Windows y *nix estándares).
- Independiente del sistema gestor de bases de datos. Su capa de abstracción y el uso de ORM (Doctrine 2, Propel), permiten cambiar con facilidad de SGBD en cualquier fase del proyecto.
- Utiliza programación orientada a objetos y características como los espacios de nombres, de ahí que sea imprescindible PHP 5.3.
- Sencillo de usar en la mayoría de casos, aunque es preferible para el desarrollo de grandes aplicaciones Web que para pequeños proyectos.
- Aunque utiliza MVC (Modelo Vista Controlador), tiene su propia forma de trabajo en este punto, con variantes del MVC clásico como la capa de abstracción de base de datos, el controlador frontal y las acciones.
- Basado en la premisa de “convenir en vez de configurar”, en la que el desarrollador sólo debe configurar aquello que no es convencional.
- Sigue la mayoría de mejores prácticas y patrones de diseño para la web.
- Preparado para aplicaciones empresariales y adaptable a las políticas y arquitecturas propias de cada empresa, además de ser lo suficientemente estable como para desarrollar aplicaciones a largo plazo.
- Código fácil de leer que incluye comentarios de phpDocumentor y que permite un mantenimiento muy sencillo.
- Fácil de extender, lo que permite su integración con las bibliotecas de otros fabricantes.
- Una potente línea de comandos que facilitan generación de código, lo cual contribuye a ahorrar tiempo de trabajo.
Además, permite el desarrollo automatizado:
- Permite la internacionalización para la traducción del texto de la interfaz, los datos y el contenido de localización.
- La presentación usa templates y layouts que pueden ser construidos por diseñadores de HTML que no posean conocimientos del framework.
- Los formularios soportan la validación automática, lo cual asegura mejor calidad de los datos en las base de datos y una mejor experiencia para el usuario.
- El manejo de cache reduce el uso de banda ancha y la carga del servidor.
- La facilidad de soportar autenticación y credenciales facilita la creación de áreas restringidas y manejo de seguridad de los usuarios.
- El enrutamiento y las URLs inteligentes hacen amigable las direcciones de las páginas de la aplicación.
- Las listas son más amigables, ya que permite la paginación, clasificación y filtraje automáticos.
- Los plugins proveen un alto nivel de extensibilidad.
- La interacción con AJAX es mucho más sencilla.
Es un framework de código abierto para desarrollar aplicaciones y servicios web con PHP 5.
Fue creado en 2011 y tiene una gran influencia de frameworks como Ruby on Rails, Sinatra y ASP.NET MVC.
Intenta aprovechar lo mejor de otros frameworks y aprovechar las características de las últimas versiones de PHP.
Gran parte de Laravel está formado por dependencias, especialmente de Symfony, esto implica que el desarrollo de Laravel dependa también del desarrollo de sus dependencias.
Su última versión estable es 4.2, lanzada en diciembre de 2013.
Sus principales características son:
- Sistema de ruteo, también RESTful
- Blade, Motor de plantillas
- Peticiones Fluent
- Eloquent ORM
- Basado en Composer
- Soporte para el caché
- Soporte para MVC
- Usa componentes de Symfony
Comparación entre Frameworks
La comparación entre frameworks puede hacerse de muchas maneras, desde las características técnicas que ofrece, hasta la curva de aprendizaje.
Por lo tanto afirmar que existe alguno que es el mejor de otro es bastante arriesgado, pues mientras un framework puede ser muy bueno para ciertas cosas, puede que otro sea mejor en otros aspectos.
Hay equipos de desarrolladores que prefieren usar frameworks con una curva de aprendizaje fácil, aunque sacrifiquen un poco de robustez en su sistema, mientras que otros prefieren basarse en cosas más complejas, a pesar de que sólo vayan a utilizar ciertas herramientas.
Aún así, la popularidad de éstos se basan en el conjunto de todas esas características, desde las características técnicas, hasta la comodidad a la hora de programar sobre ellos.
Para más información se puede consultar la siguiente tabla en wikipedia:
Comparación de frameworks PHP (Inglés)
Me agradó mucho tu artículo. Gracias.
Sergio Agosto Enriquez liked this on Facebook.
David Bonilla liked this on Facebook.
Max De Mendizábal liked this on Facebook.
Arthur Van Wolfenstein liked this on Facebook.
Israel García Herrera liked this on Facebook.
Creo qu esta muy bien especificar que es un framework, la vdd que creo que del listado hay algunos que en realidad no cumplen con los puntos que hace que un framework en realidad sea un framework, ejemplo creo que codeigniter es de los peores, la vdd es que ellos pensaron solo en ordenar un poco mas el codigo spaggeti que ya existia en php, en si creo que en verdad quieres ahorrar tiempo al desarrollar y crear algo realmente ordenado debes usar algo mas aya, unos buenos ejemplos serian rails de ruby, django de python o si quieres algo minimalista pues puedes usar express de nodejs, creo que el realidad php es como el abuelo al que quieres mucho y no quieres que muera (solo es una opinión)