← Devlog

12 Janvier 2026 - Refactor extract composition root

Problème: trop de code implémenté dans l'index.php. De bas Starto est censé jouer se rôle.

Analyse/Conception

En l'état impossible de mettre toute l'implémentation dans une seule classe. Si je veux garder une approche SOLID, je dois séparer le point d'entré et la gestion de la Request.

Le Front Controller n'est pas encore mature, n'y même le Controller. Il faut toutefois concevoir la classe qui sera responsable de la couche "HTTP".
Réflexion sur les responsabilités:

  1. Bootstrap (Composition Root - Pxe)
    • charger Config
    • Créer Container
    • Enregistrer Providers
    • Préparer l'application
  2. Request Handling (HTTP Engine)
    • Créer Request
    • Dispatcher vers un Controller
    • Retourner Response
    • Traiter une requête HTTP

Si j'applique ça au système actuel:

Classe Responsabilité Méthode principale
Pxe Composition Root (préparer River) bootstrap(): Container
Http_Engine HTTP Request/Response cycle handle(): void
Dispatcher Routing (Request → Controller → Response) dispatch(Request): Response
Starto Facade (optionnel, pour simplicité) run(string): void

Et les PSR?

PSR-7 HTTP Message Interface le standard utilisé par Guzzle. Trop complexe ici pour mon cas d'utilisation.
Je vais m'assurer que la Response renvoie bien un StatusCode (200,404,500) et gère les Headers.

PSR-15 HTTP Handlers / Middleware le principe Une interface RequestHandlerInterface. Je garde le principe pour le moment. A voir par la suite, suivant les besoins.


Pourquoi ne pas suivre toutes les PSR?
PHP-FIG représente ce qui se fait dans l"industrie. On est sur des cas complexe. Plusieurs Dev. sur un même projet. Des Librairies par dizaine. Soit des contraintes élevées où les PSR sont un choix de survie pour la pérennité de l'application.

Ici, je suis sur un projet Perso, en solo. L'objectif est de travailler les dernières features de PHP. S'il faut faire un projet full PSR, je prendrai directement Symfony.

Implémentation

Http_Engine est plus une coquille vide qu'autre chose pour le moment. Le composition Root commence à bien se dessiner.