Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
На практике обычно приходиться оперировать одновременно несколькими моделями, например: статьи, пользователи, комментарии. В принципе, это не критично, паттерн MVC это предусматривает, но это увеличивает количество зависимостей — вид и контроллер зависят более чем от одной модели, а от одной модели зависят более одного вида и контроллера.
Для отображения данных из разных моделей хотелось бы использовать виды созданные специально для них. Например, выглядит логичным отображение комментариев одинаково для статей и для товаров. Такое классический MVC не предусматривает, но это частично обходится использованием шаблонов. Т.е. используется один вид который получает данные из моделей, а для отображения их отображения используется комбинация нескольких шаблонов. И снова увеличивается количество зависимостей.
Иногда действия надо выполнить не над одной моделью, а над несколькими одновременно. Например, при удалении пользователя надо удалить все его статьи и комментарии. В результате приходится создавать контроллер, который описывает операции не только над моделью к которой он относится (в примере — пользователи), но над моделями к которым непосредственного отношения он не имеет.
А сервисный слой должен обеспечить фреймворк
Сервисный (он же прикладной) слой обеспечивает разработчик.
Согласно парадигме HMVC, каждая отдельная MVC триада используется в качестве слоя в иерархической структуре. При этом, каждая триада в этой иерархии независима от других, и может обратиться к контроллеру другой триады. Такой подход существенно облегчает и ускоряет разработку сложных приложений, облегчает их дальнейшую поддержку и масштабирование, способствует повторному использованию кода.
возложить на СУБД
$user = UserTable::loadByPK($id);
foreach ($user->comments as $comment) {
$comment->delete();
}
$user->delete();
UserService::delete($id);
еще лучше логику в СУБД засунуть.
а еще лучше логику в СУБД засунуть
Зато есть сервисы, и да, с их помощью можно организовать все что угодно.Я не имел ввиду конкретно какие либо сервисы. Я имел ввиду слой, который можно назвать хоть сервисы, хоть менеджеры, хоть реализаторы бизнес лоигки.
Еще есть CMS Joomla, в ней есть класический MVC и возможность организовать толстую модель, но нет сервисов.теряет всякий смысл.
и теперь там формально нет моделей,
Согласно парадигме HMVC, каждая отдельная MVC триада используется в качестве слоя в иерархической структуре. При этом, каждая триада в этой иерархии независима от других, и может обратиться к контроллеру другой триады. Такой подход существенно облегчает и ускоряет разработку сложных приложений, облегчает их дальнейшую поддержку и масштабирование, способствует повторному использованию кода.
Паттерн HMVC в веб-разработке