Для меня, это показатель неумения проектировать. Когда вместо того, чтобы работать со сложностью, еë пытаются просто куда-то упрятать.
Некоторые, например, фигачат события и обработчики, постепенно превращая проект в событийного спагетти-монстра, который невозможно тестировать, который глючит при любом изменении.
Кто-то плодит иерархии классов и злоупотребляет наследованием, пытаясь в родительских классах спрятать всë...
Вот теперь ещë вариант, когда "сделаем контроллеры одинаковыми, а логику спрячем в конфиг".
В чëм смысл контроллера тогда? Если он везде одинаковый, то он и не нужен, все контроллеры можно одной мидлварью заменить)
контроллер нужен чтобы сказать кому-то что делать с входными данными, и проконтролировать процесс :D
Ничо лишнего там быть не должно.