Что в моем случае V и C (MVC)? Знаю, многим вопросы про MVC уже давно надоели. Информации действительно много, но так у меня мозг устроен, что понимаю я эту информацию только на практике. Пишу сайт на MVC, модель - понятно, доступ к бд, бизнес-логика контроллер - соединяет M и V V - отображение Разумеется, я не хочу, чтобы у меня для каждой страницы был отдельный V_page_name.php, поэтому решил написать подобие шаблонизатора и использовать файлы .tpl (кстати, очень нравится система шаблонов у DLE - DataLifeEngine). Правильно ли я понимаю, что .tpl файлы будут отображением, сам шаблонизатор - отдельным от MVC классом, а контроллер будет получать данные из модели, преобразовывать в нужный формат и загонять в переменные шаблона? Если есть пример, буду благодарен.
Да, вы правильно понимаете структуру MVC. В вашем случае, .tpl файлы будут отображением, шаблонизатор будет отдельным классом, а контроллер будет обрабатывать данные из модели и передавать их в шаблон для отображения.
Примерно возможная структура кода:
Модель (Model) - отвечает за работу с данными. Например, класс, который работает с базой данных и возвращает данные:class Model { public function getData() { // запрос к базе данных или другая логика получения данных return $data; } }Контроллер (Controller) - получает данные из модели, обрабатывает их и передает в шаблон:class Controller { public function action() { $model = new Model(); $data = $model->getData(); // Тут может быть дополнительная логика обработки данных $view = new View(); $view->render('template.tpl', $data); } }Отображение (View) - отображает данные в шаблоне:class View { public function render($template, $data) { // Чтение шаблона $content = file_get_contents($template); // Вставка данных в шаблон foreach ($data as $key => $value) { $content = str_replace('{{' . $key . '}}', $value, $content); } echo $content; } }
В данном примере, контроллер создает экземпляр модели, получает данные, обрабатывает их (если необходимо) и передает в отображение. Отображение вставляет данные в шаблон и выводит на экран.
Таким образом, вы можете использовать файлы .tpl для отображения, отделить шаблонизацию от другой логики и правильно разделить задачи между моделью, контроллером и отображением в вашем MVC приложении.
Да, вы правильно понимаете структуру MVC. В вашем случае, .tpl файлы будут отображением, шаблонизатор будет отдельным классом, а контроллер будет обрабатывать данные из модели и передавать их в шаблон для отображения.
Примерно возможная структура кода:
Модель (Model) - отвечает за работу с данными. Например, класс, который работает с базой данных и возвращает данные:class Model {public function getData() {
// запрос к базе данных или другая логика получения данных
return $data;
}
}Контроллер (Controller) - получает данные из модели, обрабатывает их и передает в шаблон:class Controller {
public function action() {
$model = new Model();
$data = $model->getData();
// Тут может быть дополнительная логика обработки данных
$view = new View();
$view->render('template.tpl', $data);
}
}Отображение (View) - отображает данные в шаблоне:class View {
public function render($template, $data) {
// Чтение шаблона
$content = file_get_contents($template);
// Вставка данных в шаблон
foreach ($data as $key => $value) {
$content = str_replace('{{' . $key . '}}', $value, $content);
}
echo $content;
}
}
В данном примере, контроллер создает экземпляр модели, получает данные, обрабатывает их (если необходимо) и передает в отображение. Отображение вставляет данные в шаблон и выводит на экран.
Таким образом, вы можете использовать файлы .tpl для отображения, отделить шаблонизацию от другой логики и правильно разделить задачи между моделью, контроллером и отображением в вашем MVC приложении.