依赖项注入将参数传递给依赖项



所以我搜索了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数组中。

最新更新