Я создаю пользовательский MVC-фреймворк.
Я немного смоделировал его после фреймворка codeIgniter, но по большей части он является обычным.
Я нахожусь в точке, где у меня есть маршрутизация URL к соответствующим действиям контроллера, но я застрял в точке, где я генерирую представление, которое может использовать данные, сгенерированные контроллером.
У меня определены представления (статический HTML со встроенным php, готовым для заполнения динамических данных), и у меня есть деструктор моего базового контроллера require () для представления представления в браузере ... вот код:
public function __destruct()
{
if ($this->bSuppressView === false)
{
require(APP_PATH.'views/layout/header.php');
require(APP_PATH.'views/'.$this->sController.'/view.'.$this->sController.'.'.$this->sAction.'.php');
require(APP_PATH.'views/layout/footer.php');
}
}
Обычно, когда контроллер завершает выполнение, процесс разрыва базового контроллера будет включать в себя представление глобального заголовка, представление действия контроллера, а затем представление глобального нижнего колонтитула, которое должно заполнять веб-страницу всем для URL, который был запрошен ...
ОДНАКО, я не могу получить доступ к глобально определенным переменным из встроенного php в коде представления. В моем классе начальной загрузки я определяю кучу локальных переменных, таких как моя переменная конфигурации и т. Д., Но кажется, что представление считает эти переменные неопределенными. Кроме того, я не уверен, как разрешить представлению доступ к данным, которые, возможно, сгенерировал контроллер. Где я могу «приклеить» его, чтобы сделать его доступным для просмотра?
Дайте мне знать, если это не ясно, и я обновлю.
Спасибо!
ОБНОВЛЕНИЕ: Я обнаружил, что, делая это таким образом, «среда» представлений находится внутри объекта контроллера, что, насколько я могу судить, является отличной вещью! Мне не нужно распространять что-либо еще, кроме как в контроллере, и я могу использовать «$ this->» в представлениях, чтобы получить доступ ко всему общему или частному из класса контроллера !!!
Это оставляет вопрос: это "нормально", как это делается в MVC? Какой лучший способ пропагандировать вид? Я думаю, что это будет соответствовать моим целям, и я отправлю обратно, если обнаружу ограничение, просто относящееся к встроенному представлению php как «в рамках вызывающего контроллера» ...