gpt4 book ai didi

laravel-5 - Laravel 5 将其他对象绑定(bind)到契约(Contract)

转载 作者:行者123 更新时间:2023-12-02 03:29:01 27 4
gpt4 key购买 nike

我开始使用 Laravel 5 并尝试学习有关合约的知识,但我仍然对它们有一些疑问。

例如我想修改 Illuminate\Contracts\Auth\PasswordBroker 合约(在 App\Http\Controllers\Auth\PasswordController 中使用)

契约是一个接口(interface),但不知何故 Laravel 知道哪个实现属于那个契约..

我想将实现更改为我的自定义实现。

但是加载自定义 PasswordBroker 类的正确方法是什么?

  1. 我应该在 AppServiceProvider 中绑定(bind)我的自定义类吗?

        $this->app->bind(
    'Illuminate\Contracts\Auth\PasswordBroker',
    'App\Services\MyPasswordBroker'
    );

最佳答案

Laravel 本身在哪里绑定(bind)默认实现?

它在 'Illuminate/Foundation/Application.php'

'auth.password'        => ['Illuminate\Auth\Passwords\PasswordBroker', 'Illuminate\Contracts\Auth\PasswordBroker'],

我可以只覆盖默认绑定(bind)吗?

根据official documentations : 是的。

You can easily extend and override this class within your own application by overriding this binding.

但是记得在config/app.php中替换原来的服务提供者

Note that this class extends the HashServiceProvider, not the default ServiceProvider base class. Once you have extended the service provider, swap out the HashServiceProvider in your config/app.php configuration file with the name of your extended provider.

你的情况

因此,在您的情况下,您需要扩展 'Illuminate\Auth\Passwords\PasswordResetServiceProvider' 以保留服务提供商中发生的其他事情。

看看 default service provider .

如果您有其他问题,请告诉我。

关于laravel-5 - Laravel 5 将其他对象绑定(bind)到契约(Contract),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28430555/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com