Как расширить пакет услуг поставщика в Laravel 5.5 - PullRequest
0 голосов
/ 07 мая 2018

Я использую пакет, который интегрирует учет 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();
        });

    }
}

1 Ответ

0 голосов
/ 07 мая 2018

Пробег php artisan make:provider ExtendedXeroServiceProvider

Добавить к ./config/app.php в providers

Открыть ./app/Providers/ExtendedXeroServiceProvider.php

Изменить extends ServiceProvider на extends XeroServiceProvider

Добавить use DrawMyAttention\XeroLaravel\Providers\XeroServiceProvider к нему также

Добавление исходного поставщика услуг в черный список обнаружения в ./composer.json

EDIT

на момент написания, пакет drawmyattention/xerolaravel не использует автообнаружение, но в случае, если это так, его можно добавить к composer.json:

"extra": {
    "laravel": {
        "dont-discover": [
            "DrawMyAttention\\XeroLaravel\\Providers\\XeroServiceProvider"
        ]
    }
},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...