#symfony4 #php-7.1
#symfony4 #php-7.1
Вопрос:
В моем репозитории я хотел бы сделать что-то вроде:
public function generatePassword(Users $user, UserPasswordEncoderInterface $passwordEncoder)
{
return $passwordEncoder->encodePassword($user,$user->getPlainPassword());
}
но функция внутри контроллера ожидает второго аргумента. Есть ли способ автоматически загрузить интерфейс UserPasswordEncoderInterface или инициализировать его?
Ответ №1:
Вы можете сделать это с помощью внедрения конструктора.
Вы должны загрузить свой UserPasswordEncoderInterface
в свой класс репозитория и сохранить его глобально (в своем классе). Затем вы можете использовать его без необходимости объявлять его в параметре функции.
Что-то вроде этого:
class Repository
{
private $passwordEncoder;
public function __construct(UserPasswordEncoderInterface $passwordEncoder)
{
$this->passwordEncoder = $passwordEncoder;
}
public function generatePassword(Users $user)
{
return $this->passwordEncoder->encodePassword($user,$user->getPlainPassword());
}
}
Также введите подсказку вашему сервису.