我正在构建Extbase的扩展程序(最新版本,最新版本的错误3),并且我将模型库注入到我的模型中。
这根本行不通。没有错误,没有线索,没有。 inject *方法根本不会被调用。完全相同的注入在控制器中工作。
是否可以将存储库注入Extbase中的模型?通常,从1.4开始就可以注入模型。
我该如何调试?我在哪里看?
答案 0 :(得分:2)
这是一种常见的误解:
并非您在TYPO3 CMS中使用的每个类都默认使用依赖注入 - 这是一件好事。
真实的是,ObjectManager实例化的每个对象都可以从中受益。
简而言之:如果你new Thing()
某个对象,它将无法从依赖注入中受益。如果你使用ObjectManager
来获取某个实例,那么整个依赖注入的内容将会降低你的新实例:
initializeObject
被称为请注意,注入的对象也是由objectManager实例化的 - 如果注入ServiceA
需要注入ServiceB
,则可以进行递归。
如果您实施标记界面SingletonInterface
,也可以使用单身人士。
答案 1 :(得分:1)
只有通过ObjectManager
获取对象的实例时,依赖注入才有效。如果你正在使用好的'
t3lib_div::makeInstance('Tx_yourextension_domain_model_thing')
没有调用inject *方法。
有一个德语blog entry解释它是如何运作的。