Laravel 5.5覆盖供应商类

Kik*_*ksy 5 php laravel

我试图覆盖(不扩展)供应商类.因此,无论何时调用供应商类(在供应商代码中),我都希望它调用我的自定义类.

看起来我需要在我的别名中使用别名 App/Providers/AppServiceProvider

我试过这个:

$loader = \Illuminate\Foundation\AliasLoader::getInstance();
$loader->alias('Vendor\VendorName\Class', 'App\Vendor\MyCustomClass');
Run Code Online (Sandbox Code Playgroud)

但这没有做任何事情.

我可以让我的班级注册罚款:

 $this->app->register(
       'App\Vendor\MyCustomClass'
   );
Run Code Online (Sandbox Code Playgroud)

但是这会失败,因为构造函数依赖于那时不可用的其他变量.我从字面上只需要该应用覆盖任何调用Vendor\VendorName\ClassApp\Vendor\MyCustomClass

Kik*_*ksy 10

所以解决方案是创建一个新的ServiceProvider

php artisan make:provider MyServiceProvider
Run Code Online (Sandbox Code Playgroud)

这扩展了供应商服务提供商(在config/app.php中找到).在该ServiceProvider中,在重写Register方法中添加我的别名

 $loader->alias('Vendor\VendorName\Class', 'App\Vendor\MyCustomClass');
Run Code Online (Sandbox Code Playgroud)

  • 对于那些展望未来的人:不要忘记在 providers 数组的 Config\App.php 上添加您的自定义服务提供者。以后谢谢我 (2认同)