2012-03-11 4 views
3

Мне нужна помощь, поскольку я, похоже, не в состоянии понять концепцию.Модели yii и без базы данных

В рамках, а именно Yii, мы создаем модели, соответствующие database tables. Мы продляем их с CActiveRecord.

Однако, если я хочу создать класс, который получит некоторые данные из других моделей, но затем выполнит все вычисления на основе этих результатов и что-то с ними сделают ... тогда как я могу продолжить?

Я хочу четко разделить ответственность, поэтому я не хочу ставить все вычисления в исходных моделях на базе db. В основном идея состоит в том, что он будет брать некоторые вещи с некоторых моделей, а затем обновлять другие модели с результатами расчетов.

Что мне делать?

  • Сохраняйте все вычисления в каком-либо контроллере и используйте требуемые модели? (Hesitant об этом, потому что есть правило держать контроллер тонким)
  • Создайте ни одну модель db, а затем оттуда (как?)?
  • Сделайте что-нибудь еще (что?)?

Спасибо за любую помощь!

ответ

3

Для использования YII устной версии модели вам нужно будет создать класс, который зависит от CModel. Это абстрактный класс, поэтому вам потребуется реализовать метод attributeNames().

Чтобы использовать другие «Модели» с этой новой структурой, вам необходимо ввести их в конструктор или сразу после создания пользовательской модели.


В реальной модели MVC представляет собой слой, который в основном содержит два набора классов с определенными обязанностями: бизнес-логика домена и доступ к данным операции. Объекты, которые отвечают за Domain Business Logic, не имеют понятия, где хранится информация и откуда она. Или даже если есть такая вещь, как «база данных».

Это видео может объяснить немного: https://vimeo.com/21173483

+0

Великого видео ресурса! Вы проверите это. Благодаря! – RandomWhiteTrash

+0

@RandomWhiteTrash, вы можете [скачать слайды здесь] (http://qafoo.com/talks/11_11_osidays_advanced_oo_patters.pdf). –

Смежные вопросы