1

http://laravel.com/docs/5.1/facades

立面在底部的链接页面上列出。我的问题是......如何覆盖这些服务容器绑定?

例如,Request外观与Illuminate\Http\Requestkey绑定request。我想创建自己的类,它继承自Illuminate\Http\Request并将其与request键绑定,而不是当前类。而且我找不到哪个服务提供商绑定了这个。

4

2 回答 2

3

所以,我有点做到了。首先我注意到这些绑定是硬编码的,Illuminate\Foundation\Application::registerCoreContainerAliases()所以我扩展了这个类并覆盖了这个方法来改变它。我现在也不得不在 中调用这个类bootstrap\app.php,但是这样做并没有帮助,我仍然得到一个Illuminate\Http\Request.

所以后来我发现它Illuminate\Http\Request被直接引用public\index.php所以我尝试将它更改为My\Very\Own\Http\Request并且这有效,最后我的实现被使用了。

最后,我删除了我的版本Application::registedCoreContainerAliases()并恢复了,bootstrap\app.php因为没有此更改,一切也都可以正常工作。

于 2015-07-30T11:33:47.150 回答
1

我认为以下答案对您非常有用

https://stackoverflow.com/a/39648307/3912276

我引用了答案中最重要的部分。它解释了如何替换/扩展Mailer外观

编写您自己的Mailer扩展实现Illuminate\Mail\Mailer,您可以在其中覆盖发送方法,实现您的检查和调用parent::send()。编写自己的服务提供者(Extending Illuminate\Mail\MailServiceProvider),特别是重新实现 register 方法。它应该创建一个你自己的 Mailer 实例来代替 Laravel 自己的。(你可以从 Laravel 的 register 方法中复制大部分代码)。现在,在您的config/app.php文件中,在 providers 数组中,将 , 替换Illuminate\Mail\MailServiceProvider::class为您自己的提供者。

于 2017-09-12T14:27:32.227 回答