domingo, 8 de septiembre de 2013

Yii Framework, conceptos básicos (Parte 2)

Antes de iniciar con nuestro viaje por el framework, es necesario conocer un poco más de su funcionamiento interno para luego no perdernos. Entonces, veamos algunas cosas importantes que se debe saber:
1. Ciclo de vida del Framework. Cuando se maneja un pedido (request), la aplicación sigue el siguiente ciclo de vida:

  • La aplicación se preinicializa con una llamada a CApplication::preinit().
  • Se configura el autoloader y el manejo de errores.
  • Se registran los componentes del nucleo de la aplicación.
  • Se carga la configuración de la aplicación.
  • Se inicializa la aplicación con una llamada a CApplication::init() - Se registran los comportamientos de la aplicación y se cargan componentes estáticos.
  • Se lanza un evento onBeginRequest.
  • Se procesa el pedido del usuario (request) - Se colecta la información del pedido, se crea un controlador y se corre el controlador creado.
  • Se lanza un evento onEndRequest.

Algunos términos que se deben conocer son:

  • Un controlador (controller) es una instancia de CController o una clase que extiende (hereda) a CController
  • Una acción (action) es un método de una clase controlador cuyo nombre comienza con la palabra "action". También es posible definir una acción como una clase que extienda a CAction que luego sería instanciada en el controlador. Esto permite a las acciones poder ser utilizadas en diferentes controladores y aumenta la reusabilidad.
  • La acción por defecto de una clase es la acción Index (Puede modificarse estableciendose la variable CController::defaultAction).
  • Una ruta es formada concatenando el ID del controlador con el ID de la acción separados por una barra (/). 
Por ejemplo:
http://www.ejemplo.com/index.php?r=nomcontrolador/nomaccion 
donde:
nomcontrolador: es el ID del controlador (básicamente es el nombre del controlador)
nomaccion: es el id de la acción (el nombre del método de un controlador que define a la acción sin la palabra "action". Si el método es actionIndex el ID de la acción es "index").
OJO: por defecto los nombres de las acciones distinguen entre mayúsculas y minúsculas.

  • Un filtro es una parte del código de YII que se puede ejecutar antes y/o después de que una acción se ejecuta. Una acción puede tener múltiples filtros. Puede ser definido como un método en un controlador.
  • Un modelo es una instancia de CModel o una clase que extiende CModel. Los modelos se utilizan para mantener datos y sus respectivas reglas de negocio.
  • Una vista es la parte del framework que contiene los elementos de la interfaz de usuario, si bien puede contener PHP se recomienda que este código se mantenga relativamente simple. Grandes cambios en los datos deberían realizarse en los modelos o controladores y no así en las vistas. En una vista se puede acceder al la instancia del controlador con la palabra reservada $this. 
  • Un layout es una vista especial que se usa para decorar las vistas. Contiene las partes de la interfaz de usuario que se repiten entre las acciones, como el encabezado (header), pie (footer) o menús de un pagina web. Se aplica implícitamente al llamar al método render(), pero se puede evitar su aplicación llamando a renderPartial().
  • Un widget es una instancia de CWidget o una clase que extiende a CWidget. Es un componente que se usa para fines de presentación. Por el ejemplo el widget de presentación de datos en una tabla.
  • Las vistas de sistema se refieren a las vistas usadas por el framework para mostrar errores información de errores y registro.
  • Los componentes son objetos escritos específicamente para una tarea. Yii es un framework contrudio sobre componentes.
  • Los eventos de componentes son propiedades especiales que toman métodos como sus propiedades. Asignar un método a un evento causara que este método se ejecute cuando el evento suceda. Por ejemplo, el evento de definir un valor a un select puede lanzar un método de validación.

Para determinar cual es la clase del controlador que se debe instanciar y donde se encuentra Yii realiza los siguientes pasos:
  • Si se ha especificado CWebApplication::catchAllRequest entonces se instancia el controlador definido en la variable. Esta variable es especialmente útil cuando se esta dando mantenimiento a la aplicación pues todos los pedidos son redireccionados a la acción definida en esta variable.
  • Si el ID se encuentra en CWebApplication::controllerMap, se usara la configuración correspondiente para crear la instancia del controlador.
  • Si el Id tiene el formato "una/ruta/nombrecontrolador se asume que el controlador tiene el nombre "nombrecontrolador" y se encuentra en "protected/controllers/una/ruta" (Ubicación física).
Ahora revisaremos el flujo de trabajo definido por Yii para desarrollar un aplicación Web:
  1. Crear la el esqueleto de la aplicación (la estructura de directorios), que puede crearse automáticamente con la consola.
  2. Configurar la aplicación. Esto se realiza modificando el archivo '/application/config/main.php'.
  3. Crear un modelo para cada tipo de dato que sera utilizado. Se puede acelerar el proceso con la herramienta Gii.
  4. Crear un controlador para cada tipo de pedido (request) del usuario. Se puede acelerar el proceso con la herramienta Gii.
  5. Implementar las acciones y sus correspondientes vistas.
  6. Configurar los filtros necesarios el los controladores.
  7. Crear temas o modificar los existentes (Podría no ser necesario).
  8. Traducir los mensajes si se requiere internacionalización.
  9. Ver datos y vistas que pueden cachearse e implementar técnicas de cacheo apropiadas.
  10. Puesta en marcha >_<
Puede ser necesario crear pruebas para cada paso mencionado.

Y al fin, lo mínimo necesario para entender una aplicación Yii ya se explicó. El próximo paso, crear una aplicación real. Hasta la próxima XD
Keep Coding!!!!!


No hay comentarios:

Publicar un comentario