1

我使用哪个类来添加新的依赖容器配置?

1. \TYPO3\CMS\Extbase\Object\Container
2. \TYPO3\CMS\Extbase\Object\ObjectManager

Container 有 2 种适当的方法:

1.1 getInstance ($className, $givenConstructorArguments=array())
1.2 registerImplementation ($className, $alternativeClassName)

ObjectManager 有 2 个适当的方法:

1. get ($objectName)
2. create ($objectName)

还:

我在哪里注册依赖项?

在全局配置文件 /Typo3/LocalConfiguration.php?

我想要的是使用所有公共类的位置预配置 DI Container 单例。然后,我的扩展程序通过其名称向容器询问对象,然后他们将对象取回。

编辑1:

我在这里阅读了问题 如何在 TYPO3 Extbase 扩展中包含或自动加载外部库?+ 依赖注入?
但是我注意到他的类在 DI 容器中注册了自己(使用 Objectmanager.create)

此外,我在这里阅读 http://forge.typo3.org/projects/typo3v4-mvc/wiki/Dependency_Injection_%28DI%29 但是我仍然无法理解如何将 DI 容器用作独立的服务定位器。

编辑2:

我是否可能将我的依赖项添加到/ext/sysext/version/ext_autoload.php ?/typo3conf/extTables.php

4

1 回答 1

2

您可以在 TYPO3 Extbase Extension + Dependecy Injection 中包含或自动加载外部库

您可以在“ext_autoload.php”中包含外部库。您必须在扩展中创建 ext_autoload 文件。

$extensionPath = \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('rent_system');
return array(
'rent_system_TCPDF' => $extensionPath.'Resources/Private/PHP/tcpdf/tcpdf.php',  
);

控制器 :

/**
   * @var Tx_Extbase_Object_ObjectManagerInterface
   */
     protected $objectManager;

    /**
     * @param Tx_Extbase_Object_ObjectManagerInterface $objectManager
     */
    public function injectObjectManager(Tx_Extbase_Object_ObjectManagerInterface $objectManager) {
         $this->objectManager = $objectManager;
    }
   $pdf = $this->objectManager->create('rent_system_TCPDF');
于 2014-07-10T13:23:34.463 回答