Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 

Внедрение зависимости через метод

Внедрение зависимости через метод

Обычно зависимости класса передаются в конструктор и становятся доступными внутри класса в течение всего времени его существования. При помощи инъекции через метод возможно задать зависимость, которая необходима в единственном методе класса. Передавать такую зависимость через конструктор либо невозможно, либо это влечёт за собой ненужные накладные расходы в большинстве случаев.



Метод класса может быть определён так же, как doSomething() в примере ниже:

class MyClass extends \yii\base\Component
{
    public function __construct(/*Легковесные зависимости тут*/, $config = [])
    {
        // ...
    }

    public function doSomething($param1, \my\heavy\Dependency $something)
    {
        // Работаем с $something
    }
}

Метод можно вызвать либо передав экземпляр \my\heavy\Dependency самостоятельно, либо использовава [[yii\di\Container::invoke()]]:

$obj = new MyClass(/*...*/);
Yii::$container->invoke([$obj, 'doSomething'], ['param1' => 42]); // $something будет предоставлено DI-контейнером

Заберите ссылку на статью к себе, чтобы потом легко её найти ;)

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )

Log in to comment