Все говорят, что контроллер — это поток приложений, модель — бизнес-логика, а представление — это выход.
Я понимаю, что все шаблоны (шаблоны электронной почты, шаблоны веб-сайтов, шаблоны SMS, JSON для ajax и т. Д.) Принадлежат View. Также такие вещи, как проверка прав доступа пользователя (например, на страницах администратора), запрос маршрутизации и т. Д., Принадлежат контроллеру. А такие действия, как сохранение / извлечение / удаление данных базы данных, принадлежат модели. Наконец, ViewModels — это классы, которые вызываются представлениями для получения данных от моделей, а виртуальные машины идут в папку рядом с представлениями, моделями и контроллерами.
Но куда я должен поместить классы, такие как автозагрузчик, конфигурация, SendMail, SendSms, ReadMail, ReadSms, аутентификация, запрос, хэш, шифрование, валидатор, SessionHandler, ErrorHandler, CacheHandler, уведомления, чат, миграция БД и тысячи других?
Я ищу полное руководство: Как определить, что класс foo принадлежит M, V, C или VM, и в какую папку / пространство имен поместить это?
Постскриптум Я просто ищу независимый от технологии стандарт. Независимо от того, как Laravel или ZF или любые другие фреймворки реализовали MVC.
Благодарю.
Прежде всего, вы не можете решить этот вопрос, не указав, какой фреймворк вы используете. Хотя MVC является практически одинаковым понятием в каждой среде, реализации платформы имеют определенные различия.
Допустим, вы используете Laravel, в этом случае ваши предварительные условия маршрутизации в качестве разрешений или даже вошли в систему или нет, будут реализованы в промежуточном программном обеспечении, которое должно быть выполнено в файле rout.php.
Laravel рассматривает модели как место для реализации CRUD-операций, но вам не хватает бизнес-логики, которой у вас может не быть в модели, равно как и в контроллере. В этом случае вы можете создать отдельный контекст, каталог, в котором вы можете хранить классы с кодом, который будет использоваться на нескольких контроллерах.
Я бы сказал, что даже если вы обладаете полным знанием шаблона MVC, вам необходимо решить и изучить структуру, которая будет использоваться. Соединяя эти 2 части, вы узнаете, где разместить каждый бит кода.
Других решений пока нет …