Инверсия зависимостей в ORM. Велосипед или есть решение?

Внедряю инверсию зависимостей в ORM, чтобы уже на стадии получения объекта применилась базовая логика. В этом коде собственно пример правил инжектирования на основе полей БД (в моем случае это полноценные объекты, а не свойства). Есть ли уже подобные реализации (на любом языке программирования)?

public function __construct(
        \App\Repository\Tariff\type $TariffType,
        \App\Repository\Tariff\limit $TariffLimit,
        \App\Repository\Clients\balance $Balance,
        \Kernel\Models\Elements\OperatorItem $Oi
    ) {
        $Oi->def('\App\Logic\Balance\Balance');
        $Oi->reg('\App\Logic\Balance\BalanceNegative', [
            $TariffType->equals(function($v){
                return $v == 1;
            }),
            $Balance->equals(function($v) use ($TariffLimit){
                return $v < ($TariffLimit*-1);
            })
        ]);
        $Oi->reg('\App\Logic\Balance\BalanceNegative', [
            $TariffType->equals(function($v){
                return $v == 0;
            }),
            $Balance->equals(function($v){
                return $v < 0;
            })
        ]);
        return $Oi->getInstance();// new \App\Logic\Balance\BalanceFailure()
    }
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
@galliard
В конструкторе этого делать точно не стоит. Да вы и не сможете, так как в конструкторе ретурн не работает.
Лучше посмотреть в сторону этого паттерна https://ru.wikipedia.org/wiki/Абстрактная_фабрика_...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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