Laravel 5.5覆盖供应商类

时间:2017-12-21 13:03:18

标签: php laravel

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

看起来我需要在App/Providers/AppServiceProvider

中对该类进行别名

我试过这个:

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

但这并没有做任何事情。

我可以让我的班级注册正常:

 $this->app->register(
       'App\Vendor\MyCustomClass'
   );

但是由于构造函数依赖于此时不可用的其他变量,因此失败了。我确实只需要应用程序覆盖Vendor\VendorName\ClassApp\Vendor\MyCustomClass

的任何调用

1 个答案:

答案 0 :(得分:8)

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

php artisan make:provider MyServiceProvider

扩展了供应商服务提供商(在config / app.php中找到)。在该ServiceProvider中,在覆盖的Register方法

中添加我的别名
 $loader->alias('Vendor\VendorName\Class', 'App\Vendor\MyCustomClass');
相关问题