Честно признаться, после знакомства с MVC-фреймворками, такими как laravel 5 и yii 2, я стал хуже понимать MVC. Начнём по порядку с буквы М. Модели в ларавель(в yii я до них ещё не дошёл) - это не что-то, что содержит бизнес-логику приложения и ответственно за предоставления окончательных данных для шаблонов, это просто экземпляры ActiveRecord, вся бизнес-логика приложения находится в методах контроллеров. Теперь про роутер. Ещё при ознакомлении с MVC, у меня вызвало чувство диссонанса отсутствие буквы для такого важного компонента в абревиатуре MVC. Я Фаулера не читал, поэтому не знаю должен ли роутер быть частью паттерна, но примечательно, что буквы для него нету. По началу я думал, функцию роутера, как раз должен выполнять контроллер. Пишите, что вы думаете, по поводу этого всего.
Как-то неполноценно, развивай мысль. Я бы переделал под CMV, ибо во всём у меня получается именно так, но очерёдность видимо роли не играет или у кого-то именно такое представление.
Модель это данные, не обязательно база данных может у тебя класс с массивом что за бизнес логика? например? обычно он просто запускает контроллер и всё, видел примеры форм в Yii2 когда из контроллера вызывают модель и передают ей просто массив POST, GET или REQUEST (POST+GET) Добавлено спустя 2 минуты 15 секунд: ещё можно сделать контроллер и от него наследовать уже другие, и вот как бы в том первом можно что-то глобально менять
ну бизнес-логикой называют, ту логику которая формирует данные(которые будут отрисованы в шаблонах), или например логика авторизации(может и не формировать данных для отрисовки). Вот если модель отдавала бы данные(которые окончательные, то что непосредственно надо вставить в шаблон), то можно смело бы вызывать модель, а не контроллер в роутере и отрисовывать вид. Добавлено спустя 3 минуты 6 секунд: всмысле контроллер мне кажеться, какой то не совсем нужной оболочкой в таком случае, которой ожно принебрегнуть Это кстати отличается от того что есть в ларавеле
Бизнес-логику рекомендуют в дополнительный слой выделять, а в моделях да, только ActiveRecord или другой паттерн работы с данными. Хотя у меня логика в моделях, может я и не прав. Хотя я вообще по-разному пишу
Наследование контроллера ну контроллер может обрабатывать случаи переадресации, вывода ошибок, скажем так мелкую бизнес логику для конкретной MVC части Что там? Данные в контроллере нужно модифицировать из POST в другой формат перед передачей в модель?
Ты не один. У меня модельки есть подобие AR, но свой велосипед и помимо выгрузки данных, так же несут в себе операции по подгрузке зависимостей и, в некоторых случаях, представление данных этой же модели. Некогда меня укорили в том, что контроллер не должен содержать в себе код как таковой, он должен оперировать моделями и прочим, создавая рай для любителя побродить по ссылкам в IDE. Я полностью не отказался от своих грязных штучек, но заставил себя выносить кодопарашу в определённые для этого места. Стало меньше кода, и да, он теперь разбросан. У меня post/get не доходят до моделей. Мне кажется это не правильно. Модель есть сущность, которой должен руководить контроллер, на то он и контроллер, он управляет.
MVC в чистом виде имеет смысл на демонообразных обработчиках запросов. В пхп очень помыты границы, и если ты вместо MVC хочешь сделать RMVC - то и делай спокойно.