laravel - 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 其他地方使用的模式相同......
解决方案
public function __contruct(AWSTranslationService $awsTranslator)
{
$this->awsTranslator = $awsTranslator;
}
构造中有错字。应该:
public function __construct(AWSTranslationService $awsTranslator)
{
$this->awsTranslator = $awsTranslator;
}
推荐阅读
- java - 在java Entity类中没有从getAll方法中获取值
- sql - 从 SQL 中的 3 个连接表返回 1 条记录
- javascript - 如果存在重复值,则从数组中删除一个对象。JavaScript
- postgresql - 如何在 postgresql 中进行线性回归?
- html - CSS 背景不合适/被切断
- typescript - 不带参数的高阶函数的编译行为
- amazon-web-services - SQS 是否返回所有带有以下代码的消息?
- jcommander - 如何用 arity 0 或 1 定义参数
- xforms - 错误报告 XSLTForms 范围控制?
- python - 如何以pythonic方式重写此代码?