コアにフックする(Hookを使用して)クラス内でDependency Injectionを使用する方法はありますか?TYPO3のコアにフックするクラス内でDIを使用するには?
0
A
答えて
0
DIでは、extbase objectManagerで管理されているクラスが必要です。ただし、フック内のオブジェクトは通常DIをサポートしない\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance
でインスタンス化されます。
しかし、extbase objectManagerで管理されているフックとサービスクラスの間にプロキシレイヤーを追加できます。
はここでコンストラクタ・インジェクション使用例を示します
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Object\ObjectManager;
class YourHook {
public function yourMethod(value)
{
$this->objectManager = $this->getObjectManager();
$yourService = $this->objectManager->get(YourService::class);
$result = $yourService->process($value);
return $result;
}
protected function getObjectManager()
{
return GeneralUtility::makeInstance(ObjectManager::class);
}
}
class YourService {
public function __construct(OtherService $otherService)
{
$this->otherService = $otherService;
}
public function process($value)
{
return $this->otherService->doFancyStuff($value);
}
}
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['typo3_hook.php']['hookName'][] = 'EXT:your_ext/Classes/YourHook.php:YourHook->yourMethod'
+0
Thx!私はこの単純で効果的な可能性については考えなかった。これにより、テストフックに関連するものを単体テストするのが容易になります。 –
関連する問題
- 1. .NETコアのConfigureService-Methods(特にIApplicationLifetime)でDIを使用する
- 2. アップロードするファイルのTYPO3フック
- 3. は以下で、asp.netコアDIでasp.netのコアDI
- 4. キュウリでフックを使用するには?
- 5. TYPO3のドメイン内の異なるサブツリーに対して異なるSolrコアを使用できますか?
- 6. publish_CPTフックの前にget_post_typesを使用できるようにするクラスをインスタンス化するWordpressフック
- 7. asp.net mvc _ViewStart DIフック
- 8. mvcコアにDIを登録するときにISessionにアクセスするには
- 9. ASP.NETコアDI
- 10. TYPO3のLinkHandlerフック8
- 11. ASP.NetコアでHTTPClientをDIシングルトンとして使用する最良の方法
- 12. ASPNETコアのレジスタインスタンスDI
- 13. ユニットテストにDIを使用する
- 14. Typo3:powermailを使ってフックでデータベースにデータを挿入する方法
- 15. Aurynを「正しい」方法でDIに使用するには?
- 16. 2つ以上のサーブレットでSpring DIを使用するには?
- 17. appsettings.jsonのDIでApplicationDbContextを使用する
- 18. ASP.NET MVCコアのDIを使用してカスタムIObjectModelValidatorを登録する方法
- 19. ASP.NetのコアDIファクトリ(HttpContextに基づく)
- 20. AspNetコアDI:試用追加対使用量を追加
- 21. HK2 DIフレームワークをJersey 2で使用するには?
- 22. AndroidでSubCut(Scala DI)を使用する
- 23. aspコアのDIでパラメータを持つオブジェクトを初期化する
- 24. TYPO3:適切にイメージを使用する
- 25. TYPO3で独自のフックを作成する
- 26. WindowsサービスのEFコアとDI
- 27. コミット後にgitフックを使用する
- 28. DIをクラスインジェクションに使用する点はありますか?
- 29. DIコンテナを(ほぼ)各クラスに注入するアンチパターンですか?
- 30. PHPクラス内でこの関数を使用するには?
あなたがTYPO3のバージョンを使用しているが、あなたが使用してみましたとしてください動作しませんあなたのコードを追加します。 –