Coldbox アプリケーション全体で使用されるプラグインがいくつかあります。
それぞれのプロパティを手動で指定することなく、これらをグローバルに注入する方法はありますか?
Wirebox docsを調べましたが、関連するものは何も見つかりません。(私が何かを見落としている可能性は十分にあります。それは長くて密集したページです。)
FrameworkSupertype を装飾することがこれを行う方法のように思えますが、それについての言及は見つかりません。
Coldbox アプリケーション全体で使用されるプラグインがいくつかあります。
それぞれのプロパティを手動で指定することなく、これらをグローバルに注入する方法はありますか?
Wirebox docsを調べましたが、関連するものは何も見つかりません。(私が何かを見落としている可能性は十分にあります。それは長くて密集したページです。)
FrameworkSupertype を装飾することがこれを行う方法のように思えますが、それについての言及は見つかりません。
Stack Overflow では、ログインして件名を入力する必要があることも指摘しておきます:)
これを達成するにはいくつかの方法があり、正直なところどの方法でも機能します。
getPlugin() メソッドはすべてのハンドラー、ビュー、およびレイアウトで使用できるため、1 つ目は getPlugin("myPlugin") を使用するすべての場所で単純に呼び出すことです。
2 つ目は、ミックスイン インジェクションを使用し、すべてのハンドラーの先頭に以下を配置してから、変数スコープからプラグインにアクセスすることです。
3 つ目は、Joel が提案したようにすべてのハンドラーにベース ハンドラーを拡張させ、ベース ハンドラーに DI プロパティを配置することです。
あなたが言及した4番目は、AOPアスペクトを使用し、それをハンドラディレクトリ内のすべてのCFCのinit()メソッドにバインドし、プラグインを「後」のアドバイスとして変数スコープに設定することです。
5 番目のオプションは、インターセプターを使用して afterHandlerCreation アナウンスをリッスンし、手動でプラグインを oHandler オブジェクトに挿入することです。
そして 6 番目の可能性は、requestStartHandler または preProcess インターセプト ポイントを使用して、ビューとレイアウトでも使用できるプライベート リクエスト コレクション (prc) にプラグインへの参照を配置することです。
非常に多くのオプションがありますが、正直なところ、おそらくすべてではありません。個人的には、おそらく afterHandlerCreation インターセプターを使用しますが、最適なものを見つけて実行する必要があります。