如何使用存储库内的UserPasswordEncoderInterface编码密码?

问题描述

在我的存储库中,我想做类似的事情:

public function generatePassword(Users $user,UserPasswordEncoderInterface $passwordEncoder)
{
    return $passwordEncoder->encodePassword($user,$user->getPlainPassword());
}

,但是控制器内部的函数需要第二个参数。有没有办法自动加载或初始化UserPasswordEncoderInterface?

解决方法

您可以使用constructor injection来做到这一点。

您应该将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());
    }
}

还可以提示您的服务。