Esta en mi primera contribución en cuanto a patrones de desarrollo de software y utilización de framework Yii como ejemplo, espero criticas, gracias.
Presentación
Presentación
En la actualidad el patrón Modelo Vista Controlador (MVC) está muy difundido a nivel de programación web, pues tiene como objeto separar la lógica del negocio de las consideraciones de la interfaz de usuario para que los desarrolladores puedan modificar cada parte más fácilmente sin afectar a la otra. En este contexto se requiere un conjunto estandarizado de conceptos, prácticas y criterios para enfocar este patrón, es decir se precisa de un framework que facilite estos.
El presente trabajo está dirigido a toda aquella persona con conocimientos básicos en programación web, que quiera trabajar en un nuevo enfoque, y en una forma estándar de programación, dejando atrás la artesanía, en este afán se hará estudio del framework Yii en PHP, que trabaja con el patrón MVC.
“Codifica siempre como si la persona que finalmente mantendrá tu código fuera un psicópata violento que sabe dónde vives”
Martin Golding
Tabla de contenido
Resumen.
Capítulo I: Aspectos Generales
1.1. Objetivos
1.2. Patrón Modelo Vista Controlador
Capítulo II: Framework Yii
2.1. ¿Qué es Yii?
2.2. Requerimientos
2.3. Como se compara Yii con otros framework
2.4. Instalación.
2.5. Creando la primera aplicación.
2.6. Estructura de directorios.
2.7. Convenciones. 15
2.8. Conexión a la base de datos.
2.9. Operación CRUD.
2.10. Modelo Vista Controlador de Yii
2.11. Script de entrada.
2.12. Aplicación.
2.13. Controlador.
Referencia.
Conclusiones.
Resumen
En el capítulo I se establece los objetivos a cumplir, así mismo se desarrollara los conceptos sobre el patrón Modelo Vista Controlador (MVC) necesarios para tener una vista general sobre el modo de trabajo de éste, esto nos servirá como base en el entendimiento del framework en estudio.
En el capítulo II se detalla Framework Yii, se da una breve definición acerca de este framework, ventajas frente a otros, estructura, su instalación, y una aplicación sencilla utilizando la línea de comandos.
Capítulo I: Aspectos Generales
1.1.Objetivos
· Comprender el patrón Modelo Vista Controlador.
· Comprender e instalar el framework Yii.
· Realizar una aplicación sencilla, utilizando la herramienta de línea de comandos del framework Yii.
1.2.Patrón Modelo Vista Controlador
Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de negocio en tres componentes distintos. El patrón de llamada y retorno MVC (según CMU), se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página. El modelo es el Sistema de Gestión de Base de Datos y la Lógica de negocio, y el controlador es el responsable de recibir los eventos de entrada desde la vista.
Modelo: Esta es la representación específica de la información con la cual el sistema opera. En resumen, el modelo se limita a lo relativo de la vista y su controlador facilitando las presentaciones visuales complejas. El sistema también puede operar con más datos no relativos a la presentación, haciendo uso integrado de otras lógicas de negocio y de datos afines con el sistema modelado.
Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario.
Controlador: Este responde a eventos, usualmente acciones del usuario, e invoca peticiones al modelo y, probablemente, a la vista.
Figura 1.0: Patrón MVC
Capítulo II: Framework Yii
2.1.¿Qué es Yii?
Yii es un proyecto de código abierto distribuido bajo los términos de la licencia BSD. Esto significa que usted puede utilizar Yii gratis para desarrollar aplicaciones Web, ya sea de código abierto o propietario. Yii es un framework PHP basado en componentes de alta performance para desarrollar aplicaciones web de gran escala. El mismo permite la máxima reutilización en la programación web y puede acelerar el proceso de desarrollo. El nombre Yii, esta dado por lo fácil, eficiente y extensible que es su uso.
2.2.Requerimientos
La última versión estable de Yii es de 1.1.9, de forma segura puede utilizar esta versión en sus aplicaciones Web de producción. Continuo apoyo y correcciones de errores para esta versión se proporcionará hasta 31 de diciembre de 2012. La próxima versión principal será 2,0. Requiere de PHP 5.1.0 o superior.
2.3.Como se compara Yii con otros framework
- Como la mayoría de los frameworks PHP, Yii es un framework MVC (modelo-vista-controlador).
- Yii sobresale frente a frameworks PHP en su eficiencia, su gran cantidad de características y su clara documentación.
- Yii ha sido diseñado cuidadosamente desde el principio para el desarrollo de aplicaciones de Web. No es ni un subproducto de un proyecto ni un conglomerado de trabajo de terceros.
- Es el resultado de la vasta experiencia de los autores en desarrollo de aplicaciones web y de la investigación y la reflexión de los más populares frameworks de programación web y aplicaciones.
2.4.Instalación
Para instalar el Yii se deben seguir dos pasos:
Paso1: Descargar el framework Yii de yiiframework.com.
Paso2: Descomprimir el archivo a un directorio accesible por el servicio web. Ejemplo: c: /wamp/www.
Luego de descomprimir el archivo cambie el nombre del directorio a Yii para un fácil manejo.
Luego de instalar Yii, se debe verificar si su server satisface todos los requerimientos para utilizar Yii. Para hacerlo debe hacer accesible el script de verificación de requerimientos para utilizar Yii. Se puede acceder al script de verificación de requerimientos en la siguiente URL en un explorador web: http://hostname/yii/requirements/index.php.
Figura 2.0: Verificación de requerimientos para Yii
2.5. Creando la primera aplicación.
Para crear la primera aplicación ejecute en lo siguiente en la línea de comandos:
Figura 2.1: Línea de comandos para crear la aplicación en Yii.
Esto creará una aplicación Yii esqueleto en el directorio c:\wamp\www\aplicacion. Esta aplicación contiene la estructura de directorios requerida por la mayoría de las aplicaciones Yii.
Sin escribir ni una sola línea de código, nosotros podemos probar nuestra primera aplicación Yii ingresando a la siguiente URL en un explorador Web: http://localhost/aplicacion.
Figura 2.2: Primera Aplicación en Yii.
Como vemos, la aplicación contiene tres páginas: homepage (la página inicial), contact (página de contacto) y login (página de login de usuario). La página inicial muestra información de la aplicación y del estado del usuario logueado, la página de contacto contiene un formulario para rellenar y enviar sus consultas y la página de login de usuario permite a los mismos autenticarse para acceder a contenidos que necesitan privilegios de acceso.
2.6.Estructura de directorios
La siguiente Figura muestra la estructura de directorios de la aplicación.
testdrive/
index.php archivo de entrada de la aplicación Web
assets/ contiene archivos de recursos públicos
css/ contiene archivos CSS
images/ contiene archivos de imágenes
themes/ contiene temas de la aplicación
protected/ contiene los archivos protegidos de la aplicación
yiic script de linea de comandos yiic
yiic.bat script de linea de comandos yiic para Windows
commands/ contiene comandos 'yiic' personalizados
shell/ contiene comandos 'yiic shell' personalizados
components/ contiene componentes reusables
MainMenu.php clase de widget 'MainMenu'
Identity.php clase 'Identity' utilizada para autenticación
views/ contiene los archivos de vistas para los widgets
mainMenu.php el archivo vista para el widget 'MainMenu'
config/ contiene archivos de configuración
console.php configuración aplicación consola
main.php configuración de la aplicación Web
controllers/ contiene los archivos de clase de controladores
SiteController.php la clase controlador predeterminada
extensions/ contiene extensiones de terceros
messages/ contiene mensajes traducidos
models/ contiene archivos clase de modeloscontaining model class files
LoginForm.php el formulario modelo para la acción 'login'
ContactForm.php el formulario modelo para la acción 'contact'
runtime/ contiene archivos temporarios generados
views/ contiene archivos de vista de controladores y de diseño
layouts/ contiene archivos de diseño
main.php el diseño default para todas las vistas
site/ contiene archivos vista para el controlador 'site'
contact.php contiene la vista para la acción 'contact'
index.php contiene la vista para la acción 'index'
login.php contiene la vista para la acción 'login'
system/ contiene archivos de vista del sistema
Figura 2.3: Estructura de directorios de una aplicación Yii
2.7.Convenciones
URL.
- http://hostname/index.php?r=ControllerID/ActionID
- La variable GET r se refiere a la ruta que puede ser resuelta por Yii en controlador y acción.
Código.
- Nombrar variables, funciones y clases en camelCase.
- Las variables y funciones deben tener su primera letra en minúscula para diferenciarla de los nombres de las clases. (ejemplo: $basePath, runController(),LinkPager)
- Para miembros de clase privado es recomendado ponerles de prefijo a sus nombres un guión bajo (ejemplo: $_actionsList).
- Una regla especial para las clases Controller es que deben finalizar con la palabra Controller.
- El ID del controlador será definido por el nombre de la clase con su primer letra en minúscula y la palabra Controller truncada del mismo. Por ejemplo la clase PageController tendra el ID page (/index.php?r=page/index en vez de /index.php?r=PageController/índex).
Archivo
- Archivos de clase deben ser llamados como la clase que contienen. Por ejemplo, la clase CController se encuentra en el archivo CController.php.
- Una clase pública es una clase que puede ser utilizada por otras clases.
- Cada archivo de clase debe contener al menos una clase pública.
- Las clases privadas (clases que solo son utilizadas por una única clase pública) deben residir en el mismo archivo que la clase pública.
- Los archivos de vistas deben ser llamados con el nombre de la vista. Por ejemplo, la vista index debe encontrase en el archivo index.php.
- Los archivos de configuración puede ser nombrados arbitrariamente. Un archivo de configuración es un script PHP con el solo propósito de devolver un arreglo representando la configuración.
2.8.Conexión a la base de datos
Para configurar la base de datos con la que se va a trabajar se tiene que editar el siguiente archivo: WebRoot/Aplicacion/protected/config/main.php
Descomenta la base de datos con la que se desea trabajar
Figura 2.4: Descomentar y agregar los parámetros de la base de datos.
2.9. Operación CRUD.
En vez de estar lidiando con escribir el código actual podemos utilizar la poderosa herramienta yiic nuevamente para automatizar la generación de código por nosotros. Este proceso es también conocido como scaffolding. Abre una ventana de línea de comandos y ejecuta los comandos listados a continuación:
php -c path/to/php.ini protected/yiic.php shell
model usuario
crud usuario
En el código anterior utilizamos el comando yiic shell para interactuar con la aplicación esqueleto. Hemos ejecutado dos comandos: model User y crud User. El primero genera la clase Modelo para la tabla User, mientras que el segundo lee el modelo User y genera el código necesario para las operaciones CRUD.
2.10. Modelo Vista Controlador de Yii
Yii implementa el diseño de patrón modelo vista controlador (model-view-controller MVC) el cual es adoptado ampliamente en la programación Web.
MVC tiene por objeto separar la lógica del negocio de las consideraciones de la interfaz de usuario para que los desarrolladores puedan modificar cada parte más fácilmente sin afectar a la otra.
En MVC el modelo representa la información (los datos) y las reglas del negocio; la vista contiene elementos de la interfaz de usuario como textos, formularios de entrada; y el controlador administra la comunicación entre la vista y el modelo.
Más allá del MVC, Yii también introduce un front-controller llamado aplicación el cual representa el contexto de ejecución del procesamiento del pedido. La aplicación resuelve el pedido del usuario y la dispara al controlador apropiado para tratamiento futuro.
Figura 2.5: Estructura estática de una aplicación Yii.
El siguiente diagrama muestra un típico flujo de tareas de una aplicación Yii cuando resuelve un pedido de usuario.
Figura 2.6: Fluyo de tareas de una aplicación Yii.
- Un usuario realiza un pedido con la siguiente URL http://www.example.com/index.php?r=post/show&id=1 y el servidor Web se encarga de la solicitud mediante la ejecución del script de arranque en index.php.
- El script de entrada crea una instancia de aplicación y la ejecuta.
- La aplicación obtiene la información detallada del pedido del usuario del componente de aplicación request.
- El controlador determina el controlador y la acción pedido con ayuda del componente de aplicación llamado urlManager. Para este ejemplo el controlador es post que refiere a la clasePostController y la acción es show que su significado es determinado por el controlador.
- La aplicación crea una instancia del controlador pedido para resolver el pedido del usuario. El controlador determina que la acción show refiere al nombre de método actionShow en la clase controlador. Entonces crea y ejecuta los filtros asociados con esta acción (ejemplo: control de acceso, benchmarking). La acción es ejecutado si los filtros lo permiten.
- La acción lee el modelo Post cuyo ID es 1 de la base de datos.
- La acción realiza la vista llamada show con el modelo Post
- La vista lee y muestra los atributos del modelo Post.
- La vista ejecuta algunos widgets.
- El resultado realizado es embebido en un esquema (layout).
- La acción completa la vista realizada y se la muestra al usuario.
2.11. Script de entrada
El script de entrada es el script de inicio y es el que se ocupa de procesar el pedido del usuario inicialmente. Es el único script PHP que el usuario puede pedir directamente para ejecutarse.
Figura 2.7: Crea la instancia de la aplicación y su configuración especifica.
Este script incluye el archivo principal de Yii framework yii.php, crea la instancia de aplicación web con la configuración especificada e inicia su ejecución.
Modo Debug
Una aplicación Yii puede correr en modo debug o modo producción según el valor de la constante YII_DEBUG. Por predeterminado el valor de esta constante es false lo que significa modo producción. Para correr su aplicación en modo debug defina esta constante con el valor true antes de incluir el archivo yii.php. Para realizarlo diríjase al archivo WebRoot/Aplicacion/index.php
2.12.Aplicación
Aplicación (Application) representa el contexto de ejecución de cada pedido a la aplicación.
Su principal tarea es resolver el pedido del usuario y dispararlo al controlador apropiado para procesamiento futuro.
También se utiliza como el lugar principal para configuraciones que deben estar en el nivel de aplicación.
Por esta razón application es también llamado front-controller (controlador principal).
Configuración
La configuración es un arreglo de pares llave-valor (key-value). Cada par representa el nombre de una propiedad de la instancia de la aplicación y cada valor representa el valor inicial de la correspondiente propiedad.
2.13.Controlador
Un controlador es una instancia de CController o una de las clases que lo heredan. Es creado por la aplicación cuando un usuario realiza un pedido para ese controlador.
Abajo se encuentra el mínimo código de una clase controlador. Dado que este controlador no tiene ninguna acción definida, pedirle resultará en una excepción.
Figura 2.8: Código mínimo de una clase controlador.
Referencia
Framework Yii
Http: //www.yiiframework.com/doc/guide/1.1/es/, pagina visita 06 de diciembre del 2011.