我假设使用Extbase / Fluid和TYPO3> = 8进行扩展开发。
AFAIK,有3种实例化对象的方法:
new()
和经典PHP(不推荐)GeneralUtility::makeInstance()
$this->objectManager->get()
我想知道在哪些情况下最好使用makeInstance
或objectManager::get
。使用objectManager可能有更多的开销吗?
答案 0 :(得分:3)
用于域模型对象和存储库objectManager->get
是首选。正如您所指出的那样,它会注意注入依赖关系。
您将明确实例化的核心大多数类都不使用依赖注入,因为它们是实用程序和服务,它们也可以在extbase上下文之外使用。
MakeInstance
在new
关键字上有一些额外的功能。它处理单例并支持XCLASS
ing。
自PHP 5.5.0起,可以使用特殊的::class
常量。当支持PHP时,核心开始使用它。 5.5被放弃了。