#веб_программирование #mvc #php
Недавно начал разбираться с mvc, сам принцип примерно понял: данные из модели передаются контроллером в вид. Пишу простое приложение для тренировки и возникает куча вопросов, на которые ответа в манах не найти, так как это по ходу частные случаи, поэтому попробую задать их тут. Контроллер и модель(и). Должен ли соблюдаться принцип - для одного контроллера одна модель? Например, у меня есть модель page, которая из базы получает данные страницы (title,scripts,id и т. д.). Как то я могу её использовать для подключения в нестатичных страницах, там где нужна будет ещё одна модель? Если да, то каким образом это правильно делать? Унаследовать новую модель из модели page? Или определить в контроллере одну модель, получить данные, потом так же с другой? Либо есть ещё какой-либо способ, может быть совсем без модели. Я так понял, модели и контроллеры должны иметь базовый класс. Что должно быть реализовано в этих классах? Например стоит ли в базовом классе модели реализовать подключение к базе? Как лучше сделать подключение к базе? Стоит ли выделить под него отдельный и как его применять? Структура приложения. Везде в пример приводят такую структуру: в $_GET принимаются 2 параметра - один идентификатор контроллера, другой - его метод. Так, к примеру работает YII. Я изменил это так: у каждого контроллера есть один базовый метод, в который передается аргументом второй параметр, потом сам контроллер решает, что с ним делать. Стоит ли менять так устоявшуюся структуру? я понимаю, что в большинстве случаев можно ответить "как удобно, так и делай и не задавай дурацких вопросов". но всё же мне кажется, лучше сначала узнать, как принято это делать и уже потом на основе этого опыта будет понятно, как на самом деле удобно.
Ответы
Ответ 1
Контроллер и модель(и). Должен ли соблюдаться принцип - для одного контроллера одна модель? Нет, тут пишется как вам угодно, напр. в контроллере Controller_Page можно вызвать модели Model_User, которая возьмет логин текущего пользователя из бд и Model_Article, которая возьмет статью, и все это потом выводится в Вид через этот контроллер. Понимание прийдет к вам с опытом. Я так понял, модели и контроллеры должны иметь базовый класс. Что должно быть реализовано в этих классах? Например стоит ли в базовом классе модели реализовать подключение к базе? В базовых классах лучше указывать какие стили подключаются, заголовки сайта и т.п. а работа с БД это уже как отдельный класс тоже можно реализовать и подключить в базовом. Структура приложения. Везде в пример приводят такую структуру: в $_GET принимаются 2 параметра - один идентификатор контроллера, другой - его метод. Так, к примеру работает YII. Я изменил это так: у каждого контроллера есть один базовый метод, в который передается аргументом второй параметр, потом сам контроллер решает, что с ним делать. Стоит ли менять так устоявшуюся структуру? Во фреймворках реализуется это через $this->request->param('id') или $this->request->post().Ответ 2
Эти принципы для того, чтобы вам легче было работать. Это просто стиль работы с php. Ну например ты можешь создать один файл и в нем писать и подключение к базам, и внешний вид и контроллер. В классе можно написать функцию которые работают с базой, это еще безопасно, чем писать функции без класса, и можно функций писать статически, чтобы было еще безопасно. Думаю лучше создать отдельный config файл, который подключается с базой, и ее подключить к файлу где класс написать. И вообще мне кажется, что ты сам должен попробовать разные методы, и со временем поймешь, какой подход для тебя еще легче и понятнее. И при этом не забывай про безопасности и про быстроту приложений.
Комментариев нет:
Отправить комментарий