在 TYPO3 扩展中实例化对象的推荐方法是什么
What is the recommended way to instantiate objects in TYPO3 extensions
我假设使用 Extbase/Fluid 和 TYPO3 >= 8 进行扩展开发。
据我所知,有 3 种实例化对象的方法:
new()
与经典 PHP(不推荐)
GeneralUtility::makeInstance()
$this->objectManager->get()
我想知道在哪些情况下使用 makeInstance
或 objectManager::get
更好。使用 objectManager 可能会有更多的开销吗?
用于领域模型对象和存储库 objectManager->get
是首选。正如您所指出的,它负责注入依赖项。
您将显式实例化的核心中的大多数 类 不使用依赖项注入,因为它们是实用程序和服务,而且它们也应在 extbase 上下文之外使用。
MakeInstance
比 new
关键字有一些额外的功能。它处理单例并支持 XCLASS
ing.
特殊的 ::class
常量自 PHP 5.5.0 起可用。当对 PHP < 5.5 的支持被删除时,核心开始使用它。
我假设使用 Extbase/Fluid 和 TYPO3 >= 8 进行扩展开发。
据我所知,有 3 种实例化对象的方法:
new()
与经典 PHP(不推荐)GeneralUtility::makeInstance()
$this->objectManager->get()
我想知道在哪些情况下使用 makeInstance
或 objectManager::get
更好。使用 objectManager 可能会有更多的开销吗?
用于领域模型对象和存储库 objectManager->get
是首选。正如您所指出的,它负责注入依赖项。
您将显式实例化的核心中的大多数 类 不使用依赖项注入,因为它们是实用程序和服务,而且它们也应在 extbase 上下文之外使用。
MakeInstance
比 new
关键字有一些额外的功能。它处理单例并支持 XCLASS
ing.
特殊的 ::class
常量自 PHP 5.5.0 起可用。当对 PHP < 5.5 的支持被删除时,核心开始使用它。