> Ну вот смотри, у тебя есть 10 подобных "правильных контроллеров"
> и что каждый из них будет дублировать логику по передаче _второстепенных_
> для него данных(это новости) каждый раз?
да, так. основной контроллер должен иметь полный контроль над формированием страницы.
когда я пишу в контроллере, что нужно вывести только меню и новости - должны быть выведены
только меню и новости. и я не должен беспокоиться, что верстальщику приспичит вставить куда-то
вызов модуля NewsVersion10 вместо NewsVersion20, и мне потом придётся оправдываться,
что это верстальщик порушил бизнес-логику.
> А вдруг заказчик захотел, чтобы еще и последние топики из форума показывались
> где-то в колонке, и что, ты это опять продублируешь передачу топиков 10 раз?
нет, для этого добавляем такую строчку:
foreach( $reg[ 'widgets' ] as $widget ) $data[ $widget ]= inc( 'widgets/'.$widget, $reg );
где в $reg[ 'widgets' ] содержится дефолтный набор модулей. при этом контроллер может из своих соображений
скрыть какие-то из них или наоборот добавить своих.
> Даже в MVC реализациях есть события preExecute и postExecute, в которые можно вставить дублирующиеся участки кода
не стоит так делать, ибо когда потребуется их не выполнять - начнутся танцы с бубном.
preExecute и postExecute должны носить рекомендательный характер, но право вызова должно
оставаться за контроллером.