PHP - A ordem de execução dos middlewares no Slim framework


Quando um middleware é adicionado no Slim Framework a ordem seguida na execução não é a esperada a primeira vista. Isso ocorre porque o framework segue o conceito LIFO (Last In, First Out), onde o primeiro a ser adicionado é o último a ser executado. O código a seguir ilustra isso.

use Slim\Http\Request;
use Slim\Http\Response;

$app->add(function(Request $request, Response $response, callable $next){

    echo 'Primeiro';
    return $next($request, $response);

});

$app->add(function(Request $request, Response $response, callable $next){

    echo 'Segundo';
    return $next($request, $response);

});

Quando a aplicação ser executada, será impresso Segundo e Primeiro respectivamente, isso acontece porque o primeiro middleware a ser adicionado é o último a ser executado, ou seja, os middlewares adicionados primeiro são executados por último e os adicionados por último são os primeiros a serem executados.

Esse post surgiu depois de uma confusão que eu tive com o funcionamento das rotas do slim 3, pois antes de saber desse conceito, o funcionamento não foi nada intuitivo para mim.


ver todos os posts
Publicado em 17/10/2019