Всем привет, тема заезженна, понимаю, но четкого ответа я не смог найти, и эта неясность смущает..
Некоторые и не относятся напрямую к MVC, но все же.
Вот что интересует:
1. В public_html только Front controller и публичные данные( картинки, видео, css, js файлы) - верно?
2. Все проверки выполняются "на уровне http в контроллере" - например авторизован ли пользователь и прочее - верно?
3. Формирование ответа в контроллере или же в моделе?
3.1 тут мнения разошлись и каждый пост об этом твердит свое, кто-то говорит что модель должна быть стройной и иметь только работу с базой ( тоесть - проверил, достал, отдал), а дальше все что сказать решает контроллер, кто-то считает что лучше формировать ответ в моделе ( например если что-то не так с выборкой из бд, вернуть ошибку )
и ещё смутила фраза "уровень http" - что это вообще значит?
контекст - "все проверки на уровне http", имелось ввиду контроллер, не особо это понял
Для php как нельзя лучше подходит mvcs, где s это service. Взаимодействие происходит по следующей схеме - контроллер получает от модели данные, передает их в сервис, который возвращает данные в обработанном виде обратно контроллеру, который передает их представлению.
Так же очень важно понимать что mvc для всех разное. Например в php нет нужды в активных моделях, так как у сайтиков нет логики. А вот если бы Вы писали игровой сервер на java, то Вам бы посоветовали классическую реализацию.
И ещё, контроллер не должен заниматься авторизацией, этим занимается роутер. Роутер проверил что пользователь авторизован, взял и вызвал метод контроллера, который и предназначен для связи модели с внешним миром. То есть ему безразлично вызывает его роутер или представление, а возможно и соккет. Дальше продолжать не буду, так как вопрос в контексте php, а значит больше знать и не нужно.
И я ошибся.. не mvcs, а mvps model->view->presenter->service. Презентер занимается выборками из db, которые передает в представление, предварительно обработав данные в service.
MdaUZH: Вы должны поймать запрос, узнать маршрут, вызвать нужный путь, в котором вызываются методы контроллера.
Воспользуйтесь https://lumen.laravel.com/ который не реализует mvc, а лишь предоставляет грамотное окружение для этого. Сделайте что-то на его основе до самого конца, а уже после залезте в его исходники и посмотрите как там сделано. Но повторю ещё раз - сначала полностью сделайте, а только потом уже смотрите код.
Привет,
1) В public_html (если имеется в виду папка веб сервера), то там должен быть скрипт, который загружает MVC фреймворк либо часть V т.е. View
2) Авторизация и аутентикация должна проводится до вызова части C т.е. Controller-а
3) Только в контроллере, в моделях подготовь код, который работе с БД, и передавай подготовленные данные в модель.
3.1) Под "формировать ответ" скорее всего имелось в виду подготовить данные для отправки, например перевести в поле и т.д.
1) в паблик хтмл входной фронт скрипт index.php и папка с ресурсами, все. Остальное либо в папке protected либо на уровне выше.
2) Контроллер+ можно фильтры делать чтоб не копипастить код
3) Контроллер берет вход request, отдает в слой модели, модель отдает что-то, контроллер перерабатывает в нужный формат response и пихает в view.
4) Модели: сущность + слой логики лучше.
Зависит от паттерна (АР, Дата мапер и тд). Но разделять работу с БД и саму бизнес логику однозначно.