Внедряю инверсию зависимостей в 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()
}