Laravel 5.5依赖注入与构造方法

时间:2017-10-13 12:41:58

标签: php laravel laravel-5 dependency-injection

我在app / services / KDataService.php中创建了一个服务,如下所示:

visibility

在我的一个控制器中,我尝试使用依赖注入模式注入此服务,但是我收到以下错误:

  

类App \ Services \ KDataService中无法解析的依赖项解析[参数#0 [$ owner]]

我的控制器:

gone

任何人都知道如何通过我的$ owner和$ license?

1 个答案:

答案 0 :(得分:3)

问题是您的服务有参数但您没有指定它们。有几种方法可以做到这一点。

使用服务提供商

namespace App\Providers;

use Riak\Connection;
use Illuminate\Support\ServiceProvider;

class kDataServiceServiceProvider extends ServiceProvider
{
    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind(KDataService::class, function ($app) {
            return new KDataService(getOwner(), getLicense());
        });
    }
}

bind可以更改为其他方法。请参阅Service Container docs

使用app进行实例

/* Controller __construct */
$this->kDataService = \App::make(KDataService::class, [getOwner(), getLicense()]);

只需创建类实例

/* Controller __construct */
$this->kDataService = new KDataService(getOwner(), getLicense());

注意getOwner and getLicense更改您的逻辑。通常,您可以在控制器内或从$app

中检索它

通常,您需要解决的问题是阅读文档中的服务容器和服务提供商。