所以我搜索了Stackoverflow,但仍然没有解决我的问题。
我正在尝试将依赖项注入类中,这通过构造函数相当简单,但是我想将一些参数传递给该依赖项。我尝试使用服务提供商但没有成功。我对这个概念有点陌生,所以我肯定做错了什么。
我有一个需要 SoapClient 依赖项才能工作的类。如何使用服务提供程序和依赖项注入来实现这一点。顺便说一句,我正在使用拉拉维尔。
这就是我现在所做的,在方法中实例化 soap 客户端:
namespace AppServices;
Class Foo{
public function __construct()
{
}
public function getSomething($params)
{
$soapClient = new SoapClient(env('wsdl'));
$result = $soapClient->someMethod($params);
return $result;
}
}
这就是我想做的:
namespace AppServices;
Class Foo{
public function __construct( SoapClient $soap)
{
$this->soap = $soap
}
public function getSomething($params)
{
$result = $this->soap->someMethod($params);
return $result;
}
}
但这当然是行不通的,因为 SoapClient 类需要一个 wsdl 参数才能实例化。
您可以将以下代码添加到AppProvidersAppServiceProvider
中的register
方法中:
$this->app->bind(SoapClient::class, function ($app) {
return new SoapClient(env('wsdl'));
});
或者,您可以运行 php artisan make:provider SoapServiceProvider
来创建新的 serice 提供程序,将上述代码添加到那里的 register
方法中,然后将IlluminateViewSoapServiceProvider::class
添加到config/app.php
文件中providers
数组中。