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

时间:2019-01-25 14:49:05

标签: php laravel dependency-injection

所以我通过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参数才能实例化。

1 个答案:

答案 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文件。