контроллер - прослойка между View (HTTP, а не шаблоны как думают многие разработчики), и Приложением (моделью). Потому то они и тонкие что они занимаются исключительно конвертацией представления данных модели в предаставление клиента (не обязательно человека, а например клиентом может выступать браузер или другая программа).
Пример экшена контроллера из моего проекта:
public function registerUserAction(RegisterUserRequest $request, RegisterUserHandler $handler)
{
$user = $handler($request);
return $this->resource($user, UserTransformer::class)->withStatusCode(201);
}
В итоге `RegisterUserHandler`, в моем случае "модель" системы, или реалиация конкретного действия этой системы, ничегошеньки не знает об интерфейсе. А интерфейсу плевать как оно там что внутри делается.
Вот и вся соль.
Рекомендую вам пока отложить изучение MVC, поскольку к web оно имеет относительно никакого отношения, важна лишь идея разделения обязанностей, снижения связанности и т.д.
Почитайте про GRASP и SOLID. В GRASP описана идея контроллера очень хорошо.