我正在使用集成了Xero会计的软件包。
他们在以下位置有一个名为XeroServiceProvider.php
的文件:/vendor/drawmyattention/xerolaravel/Providers/XeroServiceProvider.php
。
我需要在我的应用程序中扩展此服务提供程序,但我不喜欢直接编辑此文件的想法。
有没有办法可以在不更新供应商文件的情况下轻松扩展此服务提供商?
这是我需要扩展的文件:
namespace DrawMyAttention\XeroLaravel\Providers;
use Illuminate\Contracts\Filesystem\Filesystem;
use Illuminate\Support\ServiceProvider;
use \App\Invoice;
class XeroServiceProvider extends ServiceProvider
{
private $config = 'xero/config.php';
public function boot()
{
$this->publishes([
__DIR__.'/../config.php' => config_path($this->config),
]);
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->app->bind('XeroInvoice', function(){
//return new \XeroPHP\Models\Accounting\Invoice();
return new Invoice();
});
}
}
答案 0 :(得分:5)
运行php artisan make:provider ExtendedXeroServiceProvider
将其添加到./config/app.php
providers
打开./app/Providers/ExtendedXeroServiceProvider.php
将extends ServiceProvider
更改为extends XeroServiceProvider
同时添加use DrawMyAttention\XeroLaravel\Providers\XeroServiceProvider
将原始服务提供商添加到./composer.json
修改强>
截至撰写本文时,drawmyattention/xerolaravel
包不使用自动发现,但如果出现这种情况,可以将其添加到composer.json
:
"extra": {
"laravel": {
"dont-discover": [
"DrawMyAttention\\XeroLaravel\\Providers\\XeroServiceProvider"
]
}
},
答案 1 :(得分:0)
基于@Quezler答案
我尝试使用名称空间添加提供程序(类),然后运行composer dump-autoload,它不起作用
我尝试添加第三方程序包(名称),然后运行composer dump-autoload然后起作用了