@prokopov-vi

Как правильно внедрять зависимости классов Yii2?

Помогите понять, где я ошибаюсь. Вроде все делаю правильно !

Нужно расширить функционал класса:

use custom\class\Finder;
class BaseLoginForm extends Model
{
    /** @var Finder */
    protected $finder;

    /**
     * @param Finder $finder
     * @param array  $config
     */
    public function __construct(Finder $finder, $config = [])
    {
        $this->finder = $finder;
        parent::__construct($config);
    }
}


делаю так:

use own\class\Finder;
class LoginForm extends BaseLoginForm
{
    /** @var Finder */
    protected $finder;

    /**
     * @param Finder $finder
     * @param array  $config
     */
    public function __construct(Finder $finder, $config = [])
    {
        $this->finder = $finder;
        parent::__construct($finder, $config);
        
    }
}


Проблема в том, что, после того как я делаю так - переменная $finder = null !

Возможно Finder класс нужно где то зарегистрировать что бы Yii знало откуда внедрять зависимость ????? Помогите разобраться !
  • Вопрос задан
  • 246 просмотров
Пригласить эксперта
Ответы на вопрос 2
rpsv
@rpsv
делай либо хорошо, либо никак
В дочернем классе не нужно описывать finder и конструктор, т.к. они наследуются.

По поводу внедрения: откуда Yii2 должен брать класс Finder?

И по сути, следующий код, тоже является внедрением:
$finder = new Finder();
$loginForm = new LoginForm($finder);

Или вас такой вариант не устраивает?
Ответ написан
qonand
@qonand
Software Engineer
Ваш ответ на вопрос

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

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