Cycle de vie d'une requête

Comprendre comment River traite une requête HTTP, de l'entrée à la sortie.

Résumé du flux
  1. Entry Point : public/index.php
  2. Bootstrap : Chargement de la config et du Container IoC.
  3. HTTP Engine : Création de la Request.
  4. Pipeline : Passage à travers les Middleware globaux.
  5. Routing : Découverte du contrôleur via le Dispatcher.
  6. Controller : Exécution de la logique métier.
  7. Response : Envoi de la réponse au client.

1. Point d'entrée (Entry Point)

Tout commence dans public/index.php. Ce fichier est minimaliste :

<?php
declare(strict_types=1);

require __DIR__ . '/../vendor/autoload.php';

// Démarrage du framework
River\Starto::run(dirname(__DIR__));

2. Bootstrap (Pxe)

La classe Pxe (Preboot xE environment) initialise l'application. Elle :

3. HTTP Engine & Pipeline

Une fois l'application "bootée", le Http_engine prend le relais.

Il crée l'objet Request à partir des superglobales PHP, puis le fait passer dans une "Pipeline" de Middlewares.

Les middlewares globaux sont exécutés dans l'ordre (ex: CORS, Security, Session, CSRF).

4. Dispatcher & Controller

Si aucun middleware n'interrompt la requête, elle arrive au Dispatcher.

Le Dispatcher interroge le Router pour trouver la route correspondante. Si une route est trouvée, le contrôleur associé est instancié (avec ses dépendances injectées via le Container) et la méthode est exécutée.

5. Response

Le contrôleur retourne un objet Response (immutable). Cet objet redescend toute la chaîne (middlewares) et est finalement envoyé au navigateur par Starto.