<?php

declare(strict_types=1);
// Active le mode strict pour les types en PHP

use Laminas\Stratigility\Middleware\ErrorHandler;
use Mezzio\Application;
use Mezzio\Handler\NotFoundHandler;
use Mezzio\Helper\ServerUrlMiddleware;
use Mezzio\Helper\UrlHelperMiddleware;
use Mezzio\MiddlewareFactory;
use Mezzio\Router\Middleware\DispatchMiddleware;
use Mezzio\Router\Middleware\ImplicitHeadMiddleware;
use Mezzio\Router\Middleware\ImplicitOptionsMiddleware;
use Mezzio\Router\Middleware\MethodNotAllowedMiddleware;
use Mezzio\Router\Middleware\RouteMiddleware;
use Psr\Container\ContainerInterface;
// Importe les classes nécessaires pour les middlewares et l'application

/**
 * Configuration de la pipeline de middleware :
 */
return function (Application $app, MiddlewareFactory $factory, ContainerInterface $container): void {
    // Le gestionnaire d'erreurs doit être le premier middleware pour capturer toutes les exceptions
    $app->pipe(ErrorHandler::class);
    $app->pipe(ServerUrlMiddleware::class);

    // Ici, vous pouvez ajouter d'autres middlewares qui doivent être exécutés sur chaque requête

    // Enregistre le middleware de routage dans la pipeline
    $app->pipe(RouteMiddleware::class);

    // Gère les échecs de routage pour des conditions communes :
    // - Requête HEAD sans route correspondante
    // - Requête OPTIONS sans route correspondante
    // - Méthode non autorisée
    $app->pipe(ImplicitHeadMiddleware::class);
    $app->pipe(ImplicitOptionsMiddleware::class);
    $app->pipe(MethodNotAllowedMiddleware::class);

    // Initialise l'UrlHelper avec les résultats du routage
    $app->pipe(UrlHelperMiddleware::class);

    // Ajoutez ici d'autres middlewares qui nécessitent d'inspecter les résultats du routage

    // Enregistre le middleware de dispatch dans la pipeline
    $app->pipe(DispatchMiddleware::class);

    // Si aucun middleware ne retourne de réponse, le NotFoundHandler est exécuté
    $app->pipe(NotFoundHandler::class);
};

Ce script configure la séquence et les conditions d'exécution des middlewares dans l'application Mezzio. Les middlewares sont des composants qui traitent les requêtes HTTP et génèrent des réponses. Ils peuvent effectuer diverses tâches comme la gestion des erreurs, le routage, la validation des requêtes, etc. La méthode pipe() est utilisée pour ajouter des middlewares à la pipeline dans l'ordre spécifié. Ce fichier est essentiel pour définir le comportement de l'application lors du traitement des requêtes HTTP.

 

Modifié le: jeudi 18 janvier 2024, 10:39