首页 > 解决方案 > Laravel 依赖注入在服务中不起作用

问题描述

我有一些无法访问的服务注入到服务中:

<?php

namespace App\Services\Translation;

use App\Services\Translation\Translators\AWSTranslationService;

class TranslatorService
{
  protected $awsTranslator;

  public function __contruct(AWSTranslationService $awsTranslator)
  {
      $this->awsTranslator = $awsTranslator;
  }

  public function translate($text, $lang, $translator = 'aws')
  {    
      return $this->awsTranslator->translate($text, $lang);
  }
}

当通过 Tinker/a 测试控制台命令调用时,访问translate()此处不起作用 - 它Call to a member function translate() on null在线上给出错误return $this->awsTranslator->translate($text, $lang);

如果我将translate()代码替换为:

$trans = new AWSTranslationService();
return $trans->translate($text, $lang);

然后它确实有效。显然我不想使用new但想正确注入。

这里有什么问题?该模式与我在 Laravel 其他地方使用的模式相同......

标签: laravellaravel-5.8

解决方案


public function __contruct(AWSTranslationService $awsTranslator)
{
    $this->awsTranslator = $awsTranslator;
}

构造中有错字。应该:

public function __construct(AWSTranslationService $awsTranslator)
{
    $this->awsTranslator = $awsTranslator;
}

推荐阅读