我开始使用Laravel 5并试图了解合同,但我仍然对它们有一些疑问。
例如,我想更改Illuminate \ Contracts \ Auth \ PasswordBroker合约(在App \ Http \ Controllers \ Auth \ PasswordController中使用)
合同是一个接口,但不知何故,Laravel知道哪个实现属于该合同。
我想将实现更改为自定义实现。
但是加载我的自定义PasswordBroker类的正确方法是什么?
我应该在AppServiceProvider中绑定我的自定义类吗?
$this->app->bind(
'Illuminate\Contracts\Auth\PasswordBroker',
'App\Services\MyPasswordBroker'
);
答案 0 :(得分:1)
它在'Illuminate/Foundation/Application.php'
'auth.password' => ['Illuminate\Auth\Passwords\PasswordBroker', 'Illuminate\Contracts\Auth\PasswordBroker'],
根据official documentations:是的。
通过覆盖此绑定,您可以在自己的应用程序中轻松扩展和覆盖此类。
但请记住在config / app.php中替换原始服务提供程序
请注意,此类扩展了HashServiceProvider,而不是默认的ServiceProvider基类。扩展服务提供者后,将config / app.php配置文件中的HashServiceProvider替换为扩展提供者的名称。
因此,在您的情况下,您需要扩展'Illuminate \ Auth \ Passwords \ PasswordResetServiceProvider'以保留服务提供商中发生的其他事情。
如果您有其他问题,请告诉我。