Каков рекомендуемый способ создания экземпляров объектов в расширениях TYPO3?

Я предполагаю разработку расширения с помощью Extbase/Fluid и TYPO3 >= 8.

Насколько я знаю, существует 3 метода создания экземпляров объектов:

  1. new() как в классическом PHP (не рекомендуется)
  2. GeneralUtility::makeInstance()
  3. $this->objectManager->get()

Я хотел бы знать, в каких случаях лучше использовать makeInstance или objectManager::get. Есть ли дополнительные накладные расходы при использовании ObjectManager?


person Sybille Peters    schedule 12.12.2017    source источник


Ответы (1)


Для использования с объектами модели предметной области и репозиториями предпочтительнее objectManager->get. Как вы указали, он заботится о введении зависимостей. Большинство классов из ядра, экземпляры которых вы будете явно создавать, не используют внедрение зависимостей, потому что они являются утилитами и службами, а также предназначены для использования вне контекста extbase.

MakeInstance имеет некоторые дополнительные функции по сравнению с ключевым словом new. Он обрабатывает синглтоны и поддерживает XCLASSing.

Специальная константа ::class доступна, начиная с PHP 5.5.0. Ядро начало использовать его, когда прекратилась поддержка PHP ‹ 5.5.

person Jigal van Hemert    schedule 29.12.2017