如何调试Extbase中的依赖注入错误?

时间:2012-03-21 15:51:03

标签: typo3 extbase

我正在构建Extbase的扩展程序(最新版本,最新版本的错误3),并且我将模型库注入到我的模型中。

这根本行不通。没有错误,没有线索,没有。 inject *方法根本不会被调用。完全相同的注入在控制器中工作。

是否可以将存储库注入Extbase中的模型?通常,从1.4开始就可以注入模型。

我该如何调试?我在哪里看?

2 个答案:

答案 0 :(得分:2)

这是一种常见的误解:

并非您在TYPO3 CMS中使用的每个类都默认使用依赖注入 - 这是一件好事。

真实的是,ObjectManager实例化的每个对象都可以从中受益。

简而言之:如果你new Thing()某个对象,它将无法从依赖注入中受益。如果你使用ObjectManager来获取某个实例,那么整个依赖注入的内容将会降低你的新实例:

请注意,注入的对象也是由objectManager实例化的 - 如果注入ServiceA需要注入ServiceB,则可以进行递归。

如果您实施标记界面SingletonInterface,也可以使用单身人士。

答案 1 :(得分:1)

只有通过ObjectManager获取对象的实例时,依赖注入才有效。如果你正在使用好的'

t3lib_div::makeInstance('Tx_yourextension_domain_model_thing')
没有调用

inject *方法。

有一个德语blog entry解释它是如何运作的。