0

Coldbox アプリケーション全体で使用されるプラグインがいくつかあります。

それぞれのプロパティを手動で指定することなく、これらをグローバルに注入する方法はありますか?

Wirebox docsを調べましたが、関連するものは何も見つかりません。(私が何かを見落としている可能性は十分にあります。それは長くて密集したページです。)

FrameworkSupertype を装飾することがこれを行う方法のように思えますが、それについての言及は見つかりません。

4

1 に答える 1

2

Stack Overflow では、ログインして件名を入力する必要があることも指摘しておきます:)

これを達成するにはいくつかの方法があり、正直なところどの方法でも機能します。

getPlugin() メソッドはすべてのハンドラー、ビュー、およびレイアウトで使用できるため、1 つ目は getPlugin("myPlugin") を使用するすべての場所で単純に呼び出すことです。

2 つ目は、ミックスイン インジェクションを使用し、すべてのハンドラーの先頭に以下を配置してから、変数スコープからプラグインにアクセスすることです。

3 つ目は、Joel が提案したようにすべてのハンドラーにベース ハンドラーを拡張させ、ベース ハンドラーに DI プロパティを配置することです。

あなたが言及した4番目は、AOPアスペクトを使用し、それをハンドラディレクトリ内のすべてのCFCのinit()メソッドにバインドし、プラグインを「後」のアドバイスとして変数スコープに設定することです。

5 番目のオプションは、インターセプターを使用して afterHandlerCreation アナウンスをリッスンし、手動でプラグインを oHandler オブジェクトに挿入することです。

そして 6 番目の可能性は、requestStartHandler または preProcess インターセプト ポイントを使用して、ビューとレイアウトでも使用できるプライベート リクエスト コレクション (prc) にプラグインへの参照を配置することです。

非常に多くのオプションがありますが、正直なところ、おそらくすべてではありません。個人的には、おそらく afterHandlerCreation インターセプターを使用しますが、最適なものを見つけて実行する必要があります。

于 2013-07-11T17:29:58.417 に答える