1

新しい依存関係コンテナー構成を追加するには、どのクラスを使用しますか?

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

コンテナには 2 つの適切なメソッドがあります。

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

ObjectManager には 2 つの適切なメソッドがあります。

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

また:

依存関係はどこに登録しますか?

グローバル設定ファイル /Typo3/LocalConfiguration.php?

私が望むのは、すべてのパブリック クラスの場所を使用して DI コンテナー シングルトンを事前構成することです。次に、私の拡張機能はコンテナにその名前でオブジェクトを要求し、オブジェクトを取得します。

編集1:

ここで質問を読み ました TYPO3 Extbase Extensionに外部ライブラリを含めるまたは自動ロードするにはどうすればよいですか? + 依存性注入?
しかし、私が気付いたのは、彼のクラスが 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 に答える