我刚刚意识到TYPO3 Extbase可以(在某些情况下?)注入依赖关系,即使你在调用例如你没有将它们传递给构造函数时也是如此$objectManager->get(Foo::class)
?我很困惑这是如何以及何时起作用的。我通过阅读源代码找不到答案。
答案 0 :(得分:3)
查看\TYPO3\CMS\Extbase\Object\Container\Container::getConstructorArguments()
。
它的工作原理如下:
如果
ObjectManager->get()
和时未提供$argumentInformation['defaultValue']
时)和$argumentInformation['dependency']
时)然后这个类将被实例化并作为参数提供给构造函数调用
答案 1 :(得分:2)
它在Extbase Framework中的很多类中都有效。您只需将@inject注释添加到声明上方的属性中。
/**
* myRepository
*
* @var \TGM\Extension\Domain\Repository\MyRepository
* @inject
*/
protected $myRepository= NULL;
这可以在诸如ActionControllers,Models,Repositories,CommandController之类的undko告知的依赖项下工作。