所以我通过Stackoverflow进行了搜索,但仍然无法解决我的问题。
我试图将一个依赖项注入到一个类中,这很容易通过构造函数完成,但是我想将一些参数传递给该依赖项。我尝试使用服务提供商没有成功。我对这个概念有点陌生,所以我肯定做错了。
我有一个需要SoapClient依赖项才能工作的类。如何使用服务提供商和依赖项注入来实现这一目标。 顺便说一句,我正在使用Laravel。
这是我现在正在做的,实例化方法中的soap客户端:
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参数才能实例化。
答案 0 :(得分:0)
您可以在register
的{{1}}方法中添加以下代码:
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
文件。