Боже, вы единственный, кто смог уловить мысль (вопрос был на нескольких форумах).
Смысл с объединением то понятен, особенно если это массив, мы просто "мержим", но что если скажем ответ из базы это класс (ORM). Как с точки зрения ООП дизайна поступить, то есть что вернуть контроллеру (так же предположим что в качестве результата из БД у нас объект класса Post)?
1) Просто вернуть массив,
где одно значение это объект Post (результат из БД), а второй вычисленные данные (ну то же, что в вашем примере
merge($result,$calculate);)
2) Создать какой-то выше по уровню класс типа OverPost, которые бы включал в себя объект (результат из БД), а второй вычисленные данные (по сути тот же массив только в обертке ООП со всеми плюшками).
3) Заранее расширить класс Post, чтобы он содержал данные не только с таблиц БД, а так же вычисляемые данные, например:
class Model {
public function getData(){
$query = "Query";
$result = $store->get($query);
$result->setSmthParam1($calculateSmth1());
$result->setSmthParam2($calculateSmth2());
return $result;
}
...
}
В общем какой вариант будет правильней, с точки зрения дизайна кода и MVC и стиля фреймворков?
Добавлено через 1 час, 19 минут и 2 секунды:Версия вопроса 2.0 (с кодом).
Условие, после обработки из БД формируется результат в виде некого объекта класса Post, в котором описаны поля таблиц (ORM иди ActiveRecord не важно).
Вопрос.
Как с точки зрения ООП дизайна поступить, то есть что вернуть контроллеру?
1) Просто вернуть массив, где одно значение это объект Post (результат из БД), а второй вычисленные данные.
class Model {
public function getData(){
$query = "Query";
$post = $store->get($query);
$result = [
'post' => $post,
'smthParams' => $this->calculateSmth()
];
return $result;
}
...
}
2) Создать какой-то выше по уровню класс типа OverPost, которые бы включал в себя объект (результат из БД), и вычисленные данные (по сути тот же массив только в обертке ООП со всеми плюшками).
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, чтобы он содержал данные не только с таблиц БД, а так же вычисляемые данные.
class Model {
public function getData(){
$query = "Query";
$post = $store->get($query);
$post->setSmthParam($this->calculateSmth());
return $post;
}
...
}
В общем какой вариант будет правильней, с точки зрения дизайна кода, с точки зрения MVC и с точки зрения нынешнего стиля фреймворков?