Silex, el manual oficial

3.2. Los middlewares de enrutamiento

Los middlewares de enrutamiento se configuran para rutas o colecciones de rutas y solo se tienen en cuenta cuando Silex ejecuta su ruta asociada. Estos middlewares son bastante flexibles, ya que se pueden encadenar varios:

$app->get('/somewhere', function () {
    // ...
})
->before($before1)
->before($before2)
->after($after1)
->after($after2)
;

3.2.1. El middleware before

El middleware de enrutamiento before se ejecuta justo antes de la función anónima asociada a la ruta, pero justo después del middleware before de la aplicación:

$before = function (Request $request, Application $app) {
    // ...
};

$app->get('/somewhere', function () {
    // ...
})
->before($before);

3.2.2. El middleware after

El middleware de enrutamiento after se ejecuta justo después de haber finalizado la ejecución de la función anónima asociada a la ruta, pero justo antes del middleware after de la aplicación:

$after = function (Request $request, Response $response, Application $app) {
    // ...
};

$app->get('/somewhere', function () {
    // ...
})
->after($after);