Практика использования MVC

Модель

Про модель надо держать следующую мысль: "Могу ли я использовать эту модель в другом проекте?", ответ должен быть положительным.

Должна

  • Работать с данными, в том числе сохранять, искать и извлекать записи из СУБД
  • Содержать бизнес-логику и проверки корректности данных
  • Формировать и выполнять SQL запросы

Не должна

  • Обращаться к параметрам запросов пользователя (GET, POST), в том числе перенаправлять пользователя
  • Генерировать HTML или другой код, который отобразиться пользователю
  • Возвращать коды состояния HTTP (404, 302 и т.д.)

Представление

Должно

  • Генерировать HTML, лучше с использованием шаблонизатора
  • Использовать данные только контроллера и модели

Не должно

  • Взаимодействовать с СУБД.
  • Обрабатывать запросы пользователя

Контроллер

Типичной действие в контроллере: создание экземпляра модели (или получение данных через статический метод модели), заполнение модели данными из POST запроса, сохранение в СУБД, перенаправление пользователя на другую страницу.

Должен

  • Обрабатывать запросы пользователей, в том числе параметры из GET и POST
  • Оперировать данными через модели и отображением через представления
  • Осуществлять редиректы

Не должен

  • Организовывать бизнес-логику
  • Содержать SQL-запросы
  • Формировать HTML разметку

Похожие записи

Laravel. Catch FindOrFail Exception

use Illuminate\Database\Eloquent\ModelNotFoundException;
...
try {
  $publication = Publication::findOrFail($id);
} catch (ModelNotFoundException $ex) {
  // Error handling code
}