Ciclo de Vida de la Página

Open Wack se encuentra actualmente bajo desarrollo, por lo que debajo sólo puedes ver la versión preliminar de la página del ciclo de vida. Open Wack implementa un patrón de controlador frontal y todas las peticiones son controladas por un único script - index.php (es el único script disponible para las peticiones de los usuarios y usuarias). Veamos como funciona:

Lo primero de todo, el fichero .htaccess en el directorio raíz, nos permitirá redireccionar todas las peticiones al script de controlador frontal.

Código de .htaccess:

Options +FollowSymLinks
RewriteEngine On
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php

Debajo puedes ver el código del script index.php:

Código de index.php:

define('_OW_', true);
 
define('DS', DIRECTORY_SEPARATOR);
 
define('OW_DIR_ROOT', dirname(__FILE__).DS );
 
require_once(OW_DIR_ROOT.'includes'.DS.'init.php');
 
$application = OW_Application::getInstance();
 
$application->triggerEvent(OW_EventManager::APPLICATION_INIT);
 
$application->triggerEvent(OW_EventManager::ROUTE_STARTUP);
 
$application->route();
 
$application->triggerEvent(OW_EventManager::ROUTE_SHUTDOWN);
 
$application->dispatch();
 
$application->finalize();
 
$application->returnResponse();

Como podemos ver, index.php es un script muy sencillo que representa un número de pasos lógicos definidos:

 <-- Page start -->

Define 3 constantes básicas

  • _OW_ - indica si el núcleo y otras clases están incluidas en el framework de OW (es un tipo de remplazo para la instrucción 'deny from all')
  • DS - breve variante de la constante estándar de PHP DIRECTORY_SEPARATOR
  • OW_DIR_ROOT - constante del directorio raíz para los módulos de scripts de OW

Incluye el script init.php (carga los módulos para el inicio de la aplicación)

  • carga las constantes y configuración para ejecutar la aplicación (almacenadas en ficheros PHP separados - define.php y configs.php)
  • carga las funciones globales (function.php)
  • carga las clases que serán usadas por la aplicación en cualquier caso
  • registrar el autoloader y el controlador de errores (interceptor de excepciones, manejador de errores PHP)

Crear una instancia de la clase de controlador frontal (OW_Application) y la inicializa

  • registra las clases que no se cargan automáticamente y objetos que se cargan automáticamente (Form, Inputs, etc)
  • añade rutas estáticas desde el sistema de navegación (páginas estáticas añadidas desde el panel de administración) en el objeto enrutador
  • registra los plugins activos en el administrador de plugins y carga los scripts de init.php (inicializadores de plugins)
  • inicializa los objetos básicos del núcleo: solicitudes, respuestas, administrador de eventos, administrador de temas, etc
  • crea y añade el documento HTML (OW_HtmlDocument) para el objeto respuesta

Se lanza el evento APPLICATION_INIT

 <-- El manejador de peticiones de usuario/a se inicia -->

Enruta la URI solicitada (Proceso de enrutamiento)

  • busca la ruta coincidente en las rutas de navegación estáticas
  • — en las rutas estáticas personalizadas
  • — en las rutas dinámicas
  • intenta resolver la URI pedida con la ruta por defecto del sistema
 <-- Si no se encuentran coincidencias -> se muestra una página 404 -->

Se lanza el evento ROUTE_SHUTDOWN

Envío de resultados de enrutado (proceso de envío)

  • Comprueba los parámetros de envío proporcionados
  • Se crea una instancia del controlador de acción;
  • Ejecuta el controlador de acción;
  • Se obtiene el resultado de marcado y se pone en un objeto de HTML

Se lanza el evento FINALIZE

Compilación y envío de respuesta

  • compila el documento a enviar ( cuerpo renderizado por el controlador + página maestra + parte de encabezado html )
  • envío de las cabeceras de HTTP añadidas
  • envío de la salida de depuración en buffer
  • envío del documento HTML compilado
 <-- Fin de la página (Aquí muere el script) -->
 
/home/openwack/public_html/docs/data/pages/es/core/ciclo-de-vida-de-la-pagina.txt · Last modified: 2010/04/30 08:00 by José Antonio Fuentes Santiago
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki