Страница 1 из 1

Переход на DDD

Добавлено: 2019.05.03, 19:53
futbolim
Приветствую. Подскажите, как плавно переходить к DDD? Сейчас yii2-app-advanced. Всё обычно. Бизнес-логика в моделях.
Оговорюсь сразу: всё, что я знаю о DDD - это один просмотренный видеоролик Дмитрия Науменко. В перспективе ожидается более-менее большой сайт. Цифру 42, скорее всего, мы перепрыгнем. Преследую две цели: научиться и сами потребности. Первое, что приходит на ум, это перенести константы в классы. Сейчас есть интерфейс, который подмешивает их:

Код: Выделить всё

interface StatusConstantInterface {
    const STATUS_DELETED =  10;
    const STATUS_DUMMY = 20;
    const STATUS_REGISTERED_THROUGH_SOCIAL_NETWORK = 25;
    const STATUS_EMAIL_NOT_CONFIRMED = 30;
    const STATUS_PHONE_NOT_CONFIRMED = 40;
    const STATUS_ACTIVE =  50;
    const STATUS_CLOSED = 60;
    const STATUS_DRAFT = 70;
    const STATUS_DISABLED = 80;
    const STATUS_SENT = 90;
    const STATUS_BANNED = 100;
    const STATUS_CANCELED = 110;
    const STATUS_CREATED = 120;
    const STATUS_PAYED = 130;
    const STATUS_DECLINED = 140;
    const STATUS_APPROVED = 150;
    const STATUS_HIDDEN = 160;
    const STATUS_MODERATED = 170;
}
Ещё думаю из AR::afterSave и прочих попереносить в Сервисы.

Поделитесь, кто как расширяется?

Re: Переход на DDD

Добавлено: 2019.05.03, 23:05
futbolim
Тема больше не актуальна. Нашёл книгу Эванса. По введению понятно, что это именно то, что нужно. Спасибо!

Re: Переход на DDD

Добавлено: 2019.05.04, 10:28
SiZE
Да, именно оно.

Re: Переход на DDD

Добавлено: 2019.05.04, 13:39
skynin
futbolim писал(а): 2019.05.03, 19:53 Бизнес-логика в моделях.
Просто вынести ее из AR моделей.

и не надо тогда никакого DDD.
futbolim писал(а): 2019.05.03, 19:53 Ещё думаю из AR::afterSave и прочих попереносить в Сервисы.
и попутно продублировать минимум треть функционала фреймворка Yii2.
при этом - самостоятельно, без комьюнити.
futbolim писал(а): 2019.05.03, 19:53 Нашёл книгу Эванса
Да, это базовая книга.

Но потребность в DDD должна быть оправдана проектом.

Основной недостаток ActiveRecord в Yii2-Laravel - в AR модели строк БД вписывается бизнес-логика.
Если же она сложная, то размазыается между ARками.

Все что нужно - это вынести ее в одельный слой, или враперы, провайдеры, сервисы, а ARки использовать как продвинутую реализацию Table Data Gateway. Потому что часто и слой не нужен

Если же переходить по серьезному, то чтобы не писать свой Doctrine/Hibernate вокруг Yii2 AR - лучше сразу на него, Doctrine и переходить.
а чтобы не писать следом и вывод данных, что по API, что виджетами, то сразу и переходить на Symfony, где тьма уже всего этого добра и написана.

DDD для Yii2/Laravel это примерно как сооружать свой React/Vue на основе jQuery
Можно конечно.

Re: Переход на DDD

Добавлено: 2019.05.04, 14:24
anton_z
Я бы не делал DDD. Сделал бы рефакторинг, покрыл бы тестами, если из нет.