1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Теоретический вопрос о моделях в mvc фреймворках и способе возврата вычисляемых данных

Тема в разделе "Web - программирование", создана пользователем LukiDuki1980, 19 апр 2015.

  1. LukiDuki1980

    LukiDuki1980 New Member

    Репутация:
    0
    Регистрация:
    19 апр 2015
    Сообщения:
    2
    Симпатии:
    0
    Вопрос у меня не конкретно к какому-то фреймворку, а в целом, так скажем по теории.
    Многие фреймворки в документациях приводят пример, когда модель возвращает непосредственно объект какой-либо таблицы, но чаще в проектах модели так же производят какие-то вычисления и могут возвращать помимо полей таблиц еще множество данных.
    Раньше, скажем в PHP, это решалось просто, к возвращенному массиву просто добавляли новые значения и возвращали весь список, а как решать эту проблему на уровне текущих абстракций фреймворков? В класс (отражающий таблицу) добавлять дополнительные поля? Или же создать отдельный класс, который включает как вычисляемые данные, так и объект с БД?
     
  2. LukiDuki1980

    LukiDuki1980 New Member

    Репутация:
    0
    Регистрация:
    19 апр 2015
    Сообщения:
    2
    Симпатии:
    0
    Версия вопроса 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 и с точки зрения нынешнего стиля фреймворков?
     
  3. -master-

    -master- Well-Known Member

    Репутация:
    0
    Регистрация:
    14 янв 2012
    Сообщения:
    616
    Симпатии:
    20
    вообщето модель не очень то должна работать с базой, это дело другого уродня
     
Загрузка...
Похожие Темы - Теоретический вопрос моделях
  1. erlan1749
    Ответов:
    2
    Просмотров:
    76
  2. SlipX
    Ответов:
    1
    Просмотров:
    88
  3. Irusik
    Ответов:
    5
    Просмотров:
    111
  4. Unkown_
    Ответов:
    14
    Просмотров:
    181
  5. thunder
    Ответов:
    3
    Просмотров:
    416

Поделиться этой страницей