【发布时间】:2021-07-07 13:23:01
【问题描述】:
在 Symfony 中,您可以直接将服务注入到控制器函数中:
use App\Service\FooService;
class FooController
{
public function one(FooService $fooService){
$fooService->doSomething();
}
}
我正在寻找何时注射和何时不注射的原因/指南。一个或优点/缺点的性能价格是多少, 例如:
- 您必须始终力争没有
__construct()吗? - 如果一个类中的所有方法都使用
FooService,我是仍然在每个方法中加载它们,还是现在使用__construct?
我如何决定实施哪种解决方案?
我目前的逻辑是“尽可能多地使用动作注入,因为这可以节省初始化所有控制器的时间,但缺点是方法调用会慢一点,因为现在必须在那里完成”
我认为这个主题处于 SO 允许范围的边缘,我正在寻找指导规则集,而不是评论或意见。
【问题讨论】:
-
我正在寻找一个“严格”的规则集,这就是问题所在 - 谁拥有适用于所有开发的如此严格的规则集。大多数人会有家规和自己的个人想法。
-
当您在方法中注入依赖项时,您并没有将行为抽象与具体依赖项区分开来。依赖于抽象,因此您不会与类依赖项的依赖项耦合。
-
我已经更改了“严格”这个词,这很有帮助。
-
@Martijn,在底部,您仍然有一个相互矛盾的问题:我正在寻找指导规则集,而不是评论或意见。 我想我们所有人都会只是给你我们的意见。
-
考虑在Reddit Symfony forum 上发帖。对此进行了较早的讨论,但我似乎找不到。动作注入用于节省一些样板代码(与构造函数注入相比),但这种类型的 PHP 8 的构造函数提升东西消失了。我自己倾向于使用构造函数注入只是出于习惯。但这真的取决于个人喜好。
标签: php symfony dependency-injection