2013-07-11 27 views
0

我們有一些在整個Coldbox應用程序中使用的插件。如何向每個處理程序注入一個Coldbox插件?

有沒有辦法全局注入這些,而不必手動指定每個屬性?

我查看了Wirebox docs,但看不到任何相關內容。 (完全可能,我忽略了一些東西;這是一個漫長而密集的頁面。)

這看起來像裝飾FrameworkSupertype可能是一種方法來做到這一點,但我找不到任何提及這樣做。

+0

我不確定ColdBox開發人員監視SO的程度如何,因此您可以考慮在Google網上論壇上提問:https://groups.google.com/forum/?fromgroups#!forum/coldbox – existdissolve

+0

Don不知道它對你的應用程序是否有用,但是在我的所有處理程序中擴展了一個Base處理程序,並且完成你想要的東西,我會經常將該插件注入到Base中,這使得其他處理程序可以使用該插件這擴大了它。 – existdissolve

+0

該組需要登錄並找出要使用的主題行前綴,因此更容易。 :) –

回答

2

我會指出,堆棧溢出還需要登錄並輸入一個主題:)

有幾種方法可以做到這一點,誠實任何方式工作。

由於getPlugin()方法在每個處理程序,視圖和佈局中都可用,第一種方法是隻需在任何想要使用它的地方調用getPlugin(「myPlugin」)。

第二種方法是使用mixin注入並將以下內容放置在每個處理程序的頂部,然後從變量作用域訪問該插件:property =「myPlugin」

第三種方法是讓所有的處理程序擴展一個像Joel建議的基本處理程序,並將DI屬性放置在基本處理程序中。

您提到的第四種方法是使用AOP方面並將其綁定到處理程序目錄中的每個CFC的init()方法,並將該插件設置爲變量作用域中的「after」通知。

第五個選項是使用攔截器來偵聽afterHandlerCreation聲明,然後手動將插件插入到oHandler對象中。

第六種可能性是使用requestStartHandler或preProcess攔截點並將私鑰請求集合(prc)中的插件引用放置在視圖和佈局中。

所以很多選擇,老實說,可能不是所有的人。就我個人而言,我可能會使用afterHandlerCreation攔截器,但是您應該找到最適合您並且可以使用的攔截器!

+0

Nah,SO登錄持續六個月或者其他事情,但我不會讓我的個人Google帳戶登錄到非個人計算機上。 無論如何,感謝您的確認和選項。 #1 /#2是我們目前所做的和想要避免的,但我會研究其餘的。甚至沒有考慮過使用prc,儘管我基本上已經爲其他東西做了那個。:S –

相關問題