El archivo Index

Cómo muchos frameworks, todas las consultas dinámicas al servidor, son procesadas por el archivo index.php.

Este archivo, se encargará de: incluir el autoload, inicializar el sistema, procesar la consulta y emitir la respuesta.

 

Incluir el autoload

El autoload permite, con el solo hecho de crear un objeto, incluir automáticamente la librería que lo define. Incluyendo el autoload, no debemos volver a incluir otra librería.

El autoload se incluye en dos pasos:

include 'bootstrap.php';
include SYSTEM_ABSPATH . SYSTEM_AUTOLOAD;

Primero, se incluye el archivo bootstrap.php. Este arhivo está a salvo de cualquier actualización, y contiene las rutas básicas y otras configuraciones mínimas. Luego, se incluye la librería autoload.

 

Inicializar el sistema

Muchas librerías se inicializan a través del contenedor (Container), por lo que resulta conveniente inicializarlo antes que nada.

$container = Container::getInstance();

Luego, se inicializarán dos librerías:

$container->get('system');
$container->get('debugger');

El sistema, incluye:

  • las fachadas (facades), que son funciones que facilitan el acceso a las librerías más comunes.
  • las constantes del sistema y del sistema de permisos.

También, setea algunas funciones de php, como ser el charset y el timezone.

El depurador, es necesario para registrar cualquier error del sistema y brindar una respuesta adecuada.

Nota: al inicializar el sistema, es posible intercalar el Perfilador.

 

Procesar la consulta

El sistema para procesar la consulta está basado en una implementación de las PSR.

Primero, con un objeto ServerRequest se representa la consulta. Esta consulta se pasa a un manejador de consultas RequestHandler, que a su vez, la pasará a través varios Middleware hasta que uno de ellos devuelva un objeto Response.

En nuestro framework, el objeto RequestHandler, encargado de ejecutar los middlewares, se llama Runner.

$request = (new ServerRequestFactory)->createServerRequest();
$handler = new Runner();
$handler->add('router');
$response = $handler->handle($request);

Algunos de los middlewares más importantes del framework son:

  • RouterMiddleware: ejecuta el controlador.
  • ProfilerMiddleware: renderiza el perfilador de código.
  • AuthenticateMiddleware: verifica los permisos del usuario.

 

Emitir la respuesta

Una vez obtenida la respuesta, ésta debe ser emitida a la consola sapi. Para ello, se utiliza la clase SapiEmitter.

(new SapiEmitter)->emit($response);