Это не другая цепочка, это мидлвар на уровень выше.
<?php
class HttpExceptionMiddleWare
{
public function handle($request, $response, $next)
{
try {
return $next->handle($request, $response);
} catch (HttpException $ex) {
$response->withStatus($ex->getCode());
$response->getBody()->write($ex->getMessage());
return $response;
}
}
}
class NewsMiddleware
{
public function handle($request, $response, $next)
{
$news = News::findById($request->getQueryParams()['id']);
if (!$news) {
throw new PageNotFound;
}
$response->getBody()->write(json_encode($news));
return $response;
}
}
Сначала будет запущен HttpExceptionMiddleWare, затем он с помощью
return $next->handle($request, $response);
Запустит NewsMiddleware
Если у тебя в очереди еще будет мидлвары после новостей, что бы их запустить нужно будет вызвать return $next->handle($request, $response) в NewsMiddleware
_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации