Передача параметров зависимости в зависимость - PullRequest
0 голосов
/ 25 января 2019

Итак, я просмотрел Stackoverflow, но до сих пор не решил свою проблему.

Я пытаюсь внедрить зависимость в класс, что довольно просто сделать с помощью конструктора, однако я хочу передать некоторыепараметры этой зависимости.Я пытался использовать поставщика услуг безуспешно.Я немного новичок в этой концепции, поэтому я определенно делаю что-то не так.

У меня есть класс, для работы которого требуется зависимость SoapClient.Как я могу добиться этого с помощью поставщика услуг и внедрения зависимости.Кстати, я использую Laravel.

Это то, что я сейчас делаю, создаю экземпляр мыльного клиента внутри метода:

namespace App\Services\;

Class Foo{

    public function __construct()
    {    
    }

    public  function getSomething($params)
    {
        $soapClient = new \SoapClient(env('wsdl'));
        $result = $soapClient->someMethod($params);
        return $result;
    }

}

Это то, что я хочу сделать:

namespace App\Services\;

Class Foo{

    public function __construct( \SoapClient $soap)
    {
        $this->soap = $soap
    }

    public  function getSomething($params)
    {
        $result = $this->soap->someMethod($params);
        return $result;
    }

}

Но это, конечно, не сработает, потому что классу SoapClient нужен параметр wsdl для создания экземпляра.

1 Ответ

0 голосов
/ 26 января 2019

Вы можете добавить следующий код к методу register в вашем App\Providers\AppServiceProvider:

$this->app->bind(\SoapClient::class, function ($app) {
    return new \SoapClient(env('wsdl'));
});

В качестве альтернативы, вы можете запустить php artisan make:provider SoapServiceProvider, чтобы создать нового поставщика услуг, добавить приведенный выше код к методу register и добавить массив Illuminate\View\SoapServiceProvider::class в providers в файле config/app.php.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...