http://laravel.com/docs/5.1/facades
立面在底部的链接页面上列出。我的问题是......如何覆盖这些服务容器绑定?
例如,Request
外观与Illuminate\Http\Request
key绑定request
。我想创建自己的类,它继承自Illuminate\Http\Request
并将其与request
键绑定,而不是当前类。而且我找不到哪个服务提供商绑定了这个。
http://laravel.com/docs/5.1/facades
立面在底部的链接页面上列出。我的问题是......如何覆盖这些服务容器绑定?
例如,Request
外观与Illuminate\Http\Request
key绑定request
。我想创建自己的类,它继承自Illuminate\Http\Request
并将其与request
键绑定,而不是当前类。而且我找不到哪个服务提供商绑定了这个。
所以,我有点做到了。首先我注意到这些绑定是硬编码的,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
因为没有此更改,一切也都可以正常工作。
我认为以下答案对您非常有用
https://stackoverflow.com/a/39648307/3912276
我引用了答案中最重要的部分。它解释了如何替换/扩展Mailer
外观
编写您自己的
Mailer
扩展实现Illuminate\Mail\Mailer
,您可以在其中覆盖发送方法,实现您的检查和调用parent::send()
。编写自己的服务提供者(ExtendingIlluminate\Mail\MailServiceProvider
),特别是重新实现 register 方法。它应该创建一个你自己的 Mailer 实例来代替 Laravel 自己的。(你可以从 Laravel 的 register 方法中复制大部分代码)。现在,在您的config/app.php
文件中,在 providers 数组中,将 , 替换Illuminate\Mail\MailServiceProvider::class
为您自己的提供者。