Собственно говоря суть отраженна в название, но малость разверну. Сейчас контроллер просто имплементирует RequestHandlerInterface и по суте каждое действие - это отдельный класс контроллера и в данном случае, даже если действия однородные, манипулирует одними и теме же зависимостимя - это всеравно разные классы, таким образом что могло бы быть одним классом контроллера с разными методами, сейчас это 1 и более классов. И еще один аспект, как быть если после контроллера должны выполнять миддлевары.
public function handle(ServerRequestInterface $request)
{
// получаем каким либо образом ваш метод action
// в данном случае берем его из Request
$this->action = $request->getAttribute('action') . 'Action';
return $this->{$this->action}($request);
}
private function getAction(ServerRequestInterface $request)
{
// обработка вашего метода
}
use Psr\Http\Server\MiddlewareInterface;
class TestMiddleware implements MiddlewareInterface
{
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler)
{
// что-то делаем с $request
return $handler->handle($request);
}
}