@Sad_Bro
На темной стороне.

MVC как правильно, объясните некоторые моменты?

Друзья, добрался я до MVC.
Поясните правильно ли я думаю и реализую.
Контроллер должен быть- 'тонким', я это понимаю так, - контроллер запрашивает у модели информацию и отдает ее рендерится в вид. И это все.

Вся работа с базой строится в модели.

Не понятно вот что, получается вся логика кидается в модель? т.е. в модель должна содержать и валидацию данных и например функционал загрузки файлов ajax, и еще и работать с базой данных.
Контроллер же в свою очередь только дожидается ответа от модели, типа прошло успешно, вот данные, и отдает в отрисовку виду ?

Просто в модели у меня получается какая то свалка, один класс который много чего может. Но соответственно, стороннему человеку в ней разобраться будет сложно из за того что много намешано в одном классе, т.е. функционал который не соприкасаются между собой.

Как правильно делать? отнаследовать от базового класса модели кучу классов под свои задачи? Ничего страшного если моделей будет больше чем одна?
  • Вопрос задан
  • 272 просмотра
Пригласить эксперта
Ответы на вопрос 2
DirecTwiX
@DirecTwiX
"display: flex;" уже предлагали?
Модель работает с БД, а контроль уже занимается обработкой.
Т.е. в модели - Select,Insert,Delete и т.д., а в контроллере валидация, обработка и прочее.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
контроллер - прослойка между View (HTTP, а не шаблоны как думают многие разработчики), и Приложением (моделью). Потому то они и тонкие что они занимаются исключительно конвертацией представления данных модели в предаставление клиента (не обязательно человека, а например клиентом может выступать браузер или другая программа).

Пример экшена контроллера из моего проекта:

public function registerUserAction(RegisterUserRequest $request, RegisterUserHandler $handler)
{
    $user = $handler($request);

    return $this->resource($user, UserTransformer::class)->withStatusCode(201);
}


В итоге `RegisterUserHandler`, в моем случае "модель" системы, или реалиация конкретного действия этой системы, ничегошеньки не знает об интерфейсе. А интерфейсу плевать как оно там что внутри делается.

Вот и вся соль.

Рекомендую вам пока отложить изучение MVC, поскольку к web оно имеет относительно никакого отношения, важна лишь идея разделения обязанностей, снижения связанности и т.д.

Почитайте про GRASP и SOLID. В GRASP описана идея контроллера очень хорошо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы