При создании веб-приложений по идеологии MVC, обычно рекомендуют считывать параметры запроса в контроллере и там же передавать их в модель.
Предположим у нас есть POST сабмит большой и сложной формы. Много полей, вложенность, повторяющиеся блоки. И данные из этой формы хочется запихать в модель. Если следовать рекомендациям, то надо в контроллере, поле за полем инициализировать поля и массивы полей модели. Это еще просто решается, если форма плоская.
Но у меня есть желание научить инициализироваться модель по POST запросу самостоятельно. Ведь модель хорошо знает структуру данных, какие нужны поля, где повторяющиеся блоки, вложенность итп. Модель хорошо знает, какие типы данных ей нужны, и может проверять данные на корректность. Т.е. хочется чтобы в контроллере было как то так:
// Контроллер
$model = new MyModel();
if(/* POST запрос */) {
// Не усложняем длинной инициализацией контроллер.
try {
$model->setDataFromPost();
}
catch(BadPostDataException $ex) {
...
}
}
setDataFromPost() - Знает какие поля из POST куда надо запихать и как обработать. Знает какие данные принадлежать к повторяющися и циклическим блокам.
Вопрос, насколько такое решение греховно? Почему всегда настойчиво рекомендуется инициализировать данные именно в контроллере, даже если инициализация выльется в сотню строк из рутиных сеттеров?