¿Framework? ¿Porque usarlos?
Muy comunmente cuando comenzamos a aprender PHP y desarrollamos nuestras aplicaciones Web no empleamos ninguna metodología, basandonos en experiencia de otros lenguajes tratamos de organizar nuestros proyectos lo mas que podemos en base a nuestra experiencia, inclusive con el paso del tiempo logramos automatizar ciertas tareas creando algunas funciones o hasta clases propias que constantemente re-usamos en nuestros proyectos. Justo esto ultimo es la base conceptual de un framework, segun wikipedia un framework es: “una estructura conceptual y tecnológica de soporte definida, normalmente con artefactos o módulos de software concretos, con base en la cual otro proyecto de software puede ser organizado y desarrollado” y aplicado a Web un framework esta diseñado para: “apoyar el desarrollo de sitios web dinámicos, aplicaciones web y servicios web. Cuyo objetivo es intentar aliviar el exceso de carga asociado con actividades comunes usadas en desarrollos web. Por ejemplo, muchos framework proporcionan bibliotecas para acceder a bases de datos, estructuras para plantillas y gestión de sesiones, y con frecuencia facilitan la reutilización de código.”
En términos simples un framework es un conjunto de librerías, clases, objetos que nos ayudaran a desarrollar de una manera mas fácil, rápida y ordenada las distintas tareas que envuelven el desarrollo Web.
¿Porque Yii Framework?
Despues de probar Codeigniter y Zend Framework, que junto con Yii son de los mas importantes frameworks php de desarrollo Web y gracias a varios artículos en la Web me di cuenta que usando Yii todo tenia mas lógica y lo manejaba con mas intuición, Codeigniter me pareció bueno con una gran comunidad apoyandose mutuamente y una documentación clara y simple al momento de probarlo era compatible con php4 lo cual significaba una gran serie de parches para que funcionara al mas puro estilo OOP ahora segun revise ya prescindieron de su compatibilidad con php4 y ajustaron algunas caracteristicas que en lo personal no me gustaban, sin embargo ya uso Yii ahora. Zend framework por su parte es muy robusto pero la curva de aprendizaje me parecía mayor y la documentación dejaba mucho que desear, ademas de que para realizar tareas “simples” se requería mas código que con Yii. El punto clave fue la facilidad de Yii para el manejo de Bases de Datos con Active Record y su performance que va por sobre los demás frameworks (pueden verlo aqui).
¿Que es Yii en si?
Yii es un framework de desarrollo de aplicaciones Web escrito en PHP usando el paradigma de programación OOP (POO Programación Orientada a Objetos). Algunas de sus caracteristicas principales son:
- Usa el patrón de Arquitectura de Software MVC (Modelo Vista Controlador) que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.
- Provee un Nivel de Abstracción hacia la Base de Datos (DAO, Data Access Object) y se apoya en el patrón de arquitectura de datos “Active Record”.
- Incluye soporte para autenticación de usuarios basado en el modelo RBAC role-based access control o control de acceso basado en roles.
- Herramientas para automatización y validación de Formularios
- Widgets Ajax ready usando jQuery
- Avanzado control de Themes
- Web services, herramientas para simplificar la tarea de generar y consumir servicios Web en diferentes formatos.
- Internacionalización y Localización.
- Sistema de manejo de cache.
- Manejo de Errores.
- Manejo de Seguridad (Sql injection, XSS, CSRF, cookie tampering, etc.).
- Generador de código automático, muy util a la hora de implementar formularios o bien operaciones CRUD. Ademas de que el código generado cumple XHTML standards.
- Amigable y extensible, por lo cual se pueden usar sin problemas librerías de terceros como Pear, Zend, etc.
Comencemos a revisarlo, y que mejor manera que realizando un proyecto, poco a poco iremos realizando actividades que son comúnmente necesarias a la hora de desarrollar un Sitio Web. Tan pronto estén listas acá irán apareciendo las ligas que conformaran todo el tutorial.
estoy mirando varios frameworks y la verdad que este tiene muy buena pinta