Вопрос у меня не конкретно к какому-то фреймворку, а в целом, так скажем по теории. Многие фреймворки в документациях приводят пример, когда модель возвращает непосредственно объект какой-либо таблицы, но чаще в проектах модели так же производят какие-то вычисления и могут возвращать помимо полей таблиц еще множество данных. Раньше, скажем в PHP, это решалось просто, к возвращенному массиву просто добавляли новые значения и возвращали весь список, а как решать эту проблему на уровне текущих абстракций фреймворков? В класс (отражающий таблицу) добавлять дополнительные поля? Или же создать отдельный класс, который включает как вычисляемые данные, так и объект с БД?
Версия вопроса 2.0 (с кодом). Условие, после обработки из БД формируется результат в виде некого объекта класса Post, в котором описаны поля таблиц (ORM иди ActiveRecord не важно). Вопрос. Как с точки зрения ООП дизайна поступить, то есть что вернуть контроллеру? 1) Просто вернуть массив, где одно значение это объект Post (результат из БД), а второй вычисленные данные. Код (PHP): class Model { public function getData(){ $query = "Query"; $post = $store->get($query); $result = [ 'post' => $post, 'smthParams' => $this->calculateSmth() ]; return $result; } ... } 2) Создать какой-то выше по уровню класс типа OverPost, которые бы включал в себя объект (результат из БД), и вычисленные данные (по сути тот же массив только в обертке ООП со всеми плюшками). Код (PHP): class Model { public function getData(){ $query = "Query"; $post = $store->get($query); $result = new OverPost() $result->setPostData($post); $result->setSmthParam($this->calculateSmth()) return $result; } ... } 3) Заранее расширить класс Post, чтобы он содержал данные не только с таблиц БД, а так же вычисляемые данные. Код (PHP): class Model { public function getData(){ $query = "Query"; $post = $store->get($query); $post->setSmthParam($this->calculateSmth()); return $post; } ... } В общем какой вариант будет правильней, с точки зрения дизайна кода, с точки зрения MVC и с точки зрения нынешнего стиля фреймворков?
Re: О моделях в MVC фреймворках и способе возврата вычисляем Надо конечно смотреть конкретно по конкретному фреймворку и конкретно по паттерну по которому проектировались модели. В частности, ORM при подходе ActiveRecord в конечные классы моделей включают методы beforeSave() или beforeUpdate и проч., которые в частности и могут быть использованы для дополнительной логической обработки данных на уровне модели.