Corriendo Aplicaciones

Después de haber instalado Yii, tienes una aplicación totalmente funcional a la que se puede acceder a través de la URL http://hostname/basic/web/index.php o http://hostname/index.php, dependiendo de tu configuración. Esta sección será una introducción a la funcionalidad incluida de la aplicación, cómo se organiza el código, y cómo la aplicación maneja los requests en general.

Información: Por simplicidad, en el transcurso de este tutorial "Para Empezar", se asume que has definido basic/web como el document root de tu servidor Web, y configurado la URL de acceso a tu aplicación para que sea http://hostname/index.php o similar. Dependiendo de tus necesidades, por favor ajusta dichas URLs.

Funcionalidad

La aplicación básica contiene 4 páginas:

  • Página principal, mostrada cuando se accede a la URL http://hostname/index.php,
  • página "Acerca de (About)",
  • la página "Contacto (Contact)", que muestra un formulario de contacto que permite a los usuarios finales contactarse vía email,
  • y la página "Login", que muestra un formulario para loguearse que puede usarse para autenticar usuarios. Intenta loguearte con "admin/admin", y verás que el elemento "Login" del menú principal cambiará a "Logout".

Estas páginas comparten un encabezado y un pie. El encabezado contiene una barra con el menú principal que permite la navegación entre las diferentes páginas.

También deberías ver una barra en la parte inferior de la ventana del navegador. Esta es la útil herramienta de depuración provista por Yii para registrar y mostrar mucha información de depuración, tal como los mensajes de log, response status, las consultas ejecutadas a la base de datos, y más.

Estructura de la aplicación

Los archivos y directorios más importantes en tu aplicación son (asumiendo que la raíz de la aplicación es basic):

basic/                  base path de la aplicación
    composer.json       archivo utilizado por Composer, describe información de sus paquetes y librerías
    config/             contiene la configuración de las aplicaciones (y otras)
        console.php     configuración de la aplicación de consola
        web.php         configuración de la aplicación web
    commands/           contiene las clases de comandos de consola
    controllers/        contiene las clases de los controladores
    models/             contienes las clases del modelo
    runtime/            contiene archivos generados por Yii en tiempo de ejecución, como archivos de log y cache
    vendor/             contiene los paquetes y librerías instalados por Composer, incluyendo el propio núcleo de Yii
    views/              contiene los archivos de vistas (templates)
    web/                raíz web de la aplicación, contiene los archivos accesibles vía Web
        assets/         contiene los assets publicados (javascript y css) por Yii
        index.php       el script de entrada (o bootstrap) de la aplicación
    yii                 el script de ejecución de los comandos de consola de Yii

En general, los archivos de la aplicación pueden ser divididos en dos: aquellos bajo basic/web y aquellos bajo otros directorios. Los primeros pueden accederse directo por HTTP (ej., en un navegador), mientras que los últimos no pueden ni deben ser accedidos así.

Yii implementa el patrón de diseño modelo-vista-controlador (MVC), que es reflejado en la estructura de directorios utilizada. El directorio models contiene todas las clases del modelo, el directorio views contiene todas las vistas (templates), y el directorio controllers contiene todas las clases de controladores.

El siguiente diagrama muestra la estructura estática de una aplicación.

Estructura Estática de una Aplicación

Cada aplicación tiene un script de entrada web/index.php que es el único script PHP accesible vía web. El script de entrada toma una petición (request) entrante y crea una instancia de una aplicación para manejarlo. La aplicación resuelve la petición (request) con la ayuda de sus componentes, y la envía al resto de los elementos MVC. Los widgets son usados en las vistas para ayudar a construir elementos de interfáz complejos y dinámicos.

Ciclo de Vida de una Petición (Request)

El siguiente diagrama muestra cómo una aplicación maneja una petición.

Ciclo de Vida de un Request

  1. Un usuario realiza una petición al script de entrada web/index.php.
  2. El script de entrada carga la configuración de la aplicación y crea una instancia de la aplicación para manejar la consulta.
  3. La aplicación resuelve la ruta solicitada con la ayuda del componente request de la aplicación.
  4. La aplicación crea una instancia de un controlador para manejar la petición.
  5. El controlador crea una instancia de una acción y ejecuta los filtros de dicha acción.
  6. Si alguno de los filtros falla, la acción es cancelada.
  7. Si todos los filtros pasan, la acción es ejecutada.
  8. La acción carga datos del modelo, posiblemente de la base de datos.
  9. La acción renderiza una vista, pasándole los datos del modelo cargado.
  10. El resultado de la renderización es pasado al componente response de la aplicación.
  11. El componente response envía el resultado de la renderización al navegador del usuario.