在TYPO3扩展中实例化对象的推荐方法是什么

时间:2017-12-12 16:39:53

标签: typo3 typo3-8.x

我假设使用Extbase / Fluid和TYPO3> = 8进行扩展开发。

AFAIK,有3种实例化对象的方法:

  1. new()和经典PHP(不推荐)
  2. 一样
  3. GeneralUtility::makeInstance()
  4. $this->objectManager->get()
  5. 我想知道在哪些情况下最好使用makeInstanceobjectManager::get。使用objectManager可能有更多的开销吗?

1 个答案:

答案 0 :(得分:3)

用于域模型对象和存储库objectManager->get是首选。正如您所指出的那样,它会注意注入依赖关系。 您将明确实例化的核心大多数类都不使用依赖注入,因为它们是实用程序和服务,它们也可以在extbase上下文之外使用。

MakeInstancenew关键字上有一些额外的功能。它处理单例并支持XCLASS ing。

自PHP 5.5.0起,可以使用特殊的::class常量。当支持PHP时,核心开始使用它。 5.5被放弃了。