我有一些无法访问注入该服务的服务:
<?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其他地方使用的模式相同...
答案 0 :(得分:0)
java.lang.StackOverflowError
在构造中有错字。应该是:
public function __contruct(AWSTranslationService $awsTranslator)
{
$this->awsTranslator = $awsTranslator;
}