another_dream
@another_dream
Backend-разработчик, Laravel/ZF2/Yii2

Как грамотно разделить AR и бизнес-логику для сущностей в Yii2?

Имеется проект на Yii2 и было принято решение разделить AR модели и логику для них.
Думал выделить логику хранения данных в репозиторий, но, как я понял, AR сам по себе реализует этот паттерн.
Сейчас есть в мыслях следующая структура:
app\models\ActiveRecord\Base\BaseFoo - здесь храню основной класс модели, который наследуюется от yii\db\ActiveRecord, в данный момент содержание следующее: tableName(), правила валидации, сценарии, лейблы аттрибутов
app\models\ActiveRecord\Foo - наследование от BaseFoo, описание behaviors(), если нужно, и здесь же описание логики.

Подобная структура приемлема? Можно, конечно, вынести Foo модель в app\models\Logic или что-то вроде того, но лучше, как мне кажется, хранить в app\models\ActiveRecord.

Буду признателен за любые альтернативы, интересен ваш собственный подход в описании структуры приложения.
  • Вопрос задан
  • 557 просмотров
Решения вопроса 1
dmitriylanets
@dmitriylanets
веб-разработчик
Repository - содержит реализацию с слоем хранения
ActiveRecord - инструмент для работы с базой данных
Service - содержит бизнес логику

в контексте многослойной системы:
Service
|
Repository
|
ActiveRecord

вышестоящий использует только нижестоящий слой
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы