1. \TYPO3\CMS\Extbase\Object\Container
2. \TYPO3\CMS\Extbase\Object\ObjectManager
1.1 getInstance ($className, $givenConstructorArguments=array())
1.2 registerImplementation ($className, $alternativeClassName)
1. get ($objectName)
2. create ($objectName)
同时
在全局配置文件/Typo3/LocalConfiguration.php?
中我想要的是使用所有公共类的位置预先配置DI Container单例。 我的扩展然后通过其名称向Container请求一个对象,然后他们将对象返回。
我在这里阅读了这个问题
How do I include or autoload external libraries in a TYPO3 Extbase Extension? + Dependecy Injection?
然而,我注意到他的类在DI容器中注册(使用Objectmanager.create)
另外我在这里阅读 http://forge.typo3.org/projects/typo3v4-mvc/wiki/Dependency_Injection_%28DI%29 但是我仍然无法理解如何将DI Container用作独立的服务定位器。
我是否可以将我的依赖项添加到 /ext/sysext/version/ext_autoload.php? 要么 的 /typo3conf/extTables.php
答案 0 :(得分: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');