Laravel依赖注入在服务中不起作用

时间:2019-08-05 10:23:30

标签: laravel laravel-5.8

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

<?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 /测试控制台命令调用时,无法访问此处的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其他地方使用的模式相同...

1 个答案:

答案 0 :(得分:0)

java.lang.StackOverflowError

在构造中有错字。应该是:

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