Я создаю структуру микро MVC в PHP для моего проекта. На самом деле это только VC, я не использую модели, вместо этого я выполняю всю логику контроллера (включая получение данных от mongodb)., используя тот же вид между страницами
У меня есть основной класс контроллера с функцией renderView(...)
(который выполняет некоторые проверки, извлекает массив данных в переменные и просто вызывает include() для каждого представления), и все контроллеры расширяют этот класс.
Также я написал свой собственный маршрутизатор URL-адресов, где я могу указать, какой URL-адрес будет вызывать тот метод, с какого контроллера. Например:
/ -> Home::index()
/users/:id -> Users::showProfilePage($id)
/settings -> Users::showSettings()
т.д.
Почти в каждом методе я загружаю те же взгляды:
$this->renderView("header", "sidebar", <main view for the current page>, "footer", $data);
Теперь моя проблема заключается в том, что я хочу использовать эти взгляды по много страниц, но, например, header
и sidebar
нуждаются в собственной логике (PHP-код). Как я могу достичь этого, не копируя php-код для боковой панели для каждого контроллера и метода, который визуализирует вид sidebar
?
Ну .. если нет модели, то почему, черт возьми, вы называете его «MVC»? –