ADR-005 - Modèle d'Intergiciel PSR-15
ADR-005: Modèle d’Intergiciel PSR-15 pour XOOPS 4.0
Section intitulée « ADR-005: Modèle d’Intergiciel PSR-15 pour XOOPS 4.0 »Adopter les gestionnaires de requêtes de serveur HTTP PSR-15 (intergiciels) pour améliorer le pipeline de traitement des requêtes.
Proposé - En évaluation pour la version XOOPS 4.0
Contexte
Section intitulée « Contexte »Approche Actuelle
Section intitulée « Approche Actuelle »XOOPS 2.5 utilise une approche monolithique de traitement des requêtes :
// Approche Actuelle: Traitement Séquentielrequire_once 'mainfile.php';// → Initialisation du noyau// → Authentification utilisateur// → Chargement du module// → Rendu de la page
// Tous dans un flux, préoccupations mélangéesProblèmes avec l’Approche Actuelle
Section intitulée « Problèmes avec l’Approche Actuelle »- Préoccupations Mélangées - L’authentification, la journalisation, le routage sont tous entrelacés
- Difficile à Tester - Difficile de tester unitairement les étapes individuelles du traitement des requêtes
- Difficile à Étendre - Les modules ne peuvent se connecter que via preload/events
- Mauvaise Séparation - La logique de traitement des requêtes est dispersée dans le code
- Non Composable - Impossible de chaîner ou de réorganiser facilement les étapes de traitement
Qu’est-ce que l’Intergiciel PSR-15?
Section intitulée « Qu’est-ce que l’Intergiciel PSR-15? »PSR-15 définit une interface standard pour l’intergiciel HTTP :
<?phpinterface RequestHandlerInterface { public function handle(ServerRequestInterface $request): ResponseInterface;}
interface MiddlewareInterface { public function process( ServerRequestInterface $request, RequestHandlerInterface $handler ): ResponseInterface;}Chaîne d’Intergiciels:
Requête ↓[Logger] → logs request ↓[Auth] → validates user session ↓[CORS] → checks cross-origin ↓[Router] → dispatches to handler ↓[Handler] → generates response ↓RéponseDécision
Section intitulée « Décision »Adopter la Pile d’Intergiciels PSR-15 pour XOOPS 4.0
Section intitulée « Adopter la Pile d’Intergiciels PSR-15 pour XOOPS 4.0 »Mettez en œuvre un pipeline de traitement des requêtes basé sur les intergiciels suivant la norme PSR-15.
Aperçu de l’Architecture
Section intitulée « Aperçu de l’Architecture »graph TD subgraph "Request Processing Pipeline" A["HTTP Request<br/>(PSR-7 ServerRequest)"] B["Middleware Stack<br/>(PSR-15)"] C["Logger Middleware"] D["Session Middleware"] E["Auth Middleware"] F["CORS Middleware"] G["Router Middleware"] H["Handler<br/>(Controller/Action)"] I["Response<br/>(PSR-7 Response)"] end
A --> B B --> C C --> D D --> E E --> F F --> G G --> H H --> IConséquences
Section intitulée « Conséquences »Effets Positifs
Section intitulée « Effets Positifs »- Séparation des Préoccupations - Chaque intergiciel gère une responsabilité
- Testabilité - Facile de tester unitairement les composants d’intergiciel individuels
- Composabilité - L’intergiciel peut être mélangé et réorganisé
- Conforme aux Normes - Utilise les normes PSR-15 et PSR-7
- Extensibilité - Les modules peuvent facilement ajouter des intergiciels personnalisés
- Débogage - Flux de requête clair à travers le pipeline
- Performance - Peut optimiser les couches d’intergiciel spécifiques
- Interopérabilité - Peut utiliser l’intergiciel PSR-15 tiers
Effets Négatifs
Section intitulée « Effets Négatifs »- Courbe d’Apprentissage - Les développeurs doivent comprendre PSR-15
- Surcharge de Performance - Plus d’appels de fonction dans le pipeline
- Complexité - Plus de pièces mobiles qu’une approche monolithique
- Effort de Migration - Nécessite une refactorisation du code existant
- Dépendances - Nécessite une bibliothèque HTTP PSR-7
Décisions Connexes
Section intitulée « Décisions Connexes »- ADR-001: Architecture Modulaire - Fondation
- ADR-004: Système de Sécurité - Utilise l’intergiciel pour auth
- ADR-006: Auth à Deux Facteurs - Peut être un intergiciel
Références
Section intitulée « Références »Normes PSR
Section intitulée « Normes PSR »Cadres d’Intergiciel
Section intitulée « Cadres d’Intergiciel »- Framework Slim - Exemples d’intergiciel
- Zend Expressive - Cadre PSR-15
- Guzzle - Intergiciel client HTTP
- RelayPHP - Bibliothèque d’intergiciel
- Intergiciel PSR-15 - Collection d’intergiciels
#xoops #adr #psr-15 #middleware #architecture #psr-7