2016-06-15 41 views
0

我正在嘗試在Lucee中創建全局函數。我遵循指示here,並讓它「工作」。裏面的Application.cfc的我把下面的代碼:Lucee/Coldfusion中的全局函數

public void function onRequest() { 
    URL.IsInternalUser = function() { return (SESSION.user.ID ?: 0); }; 
} 

這似乎是工作在某些情況下正常,但如果我們需要在一個包含的Application.cfc子目錄來訪問該功能不具備的功能再 - 定義它會錯誤地說這個函數不存在。

我試圖實現的最終目標是擁有一個包含多個用戶定義函數的cfc文件,然後讓它們在整個應用程序中都可以訪問,而無需重新定義一遍又一遍。

有沒有更好的方法來完成我們想要的?我問這是因爲我在前面評論部分引用的頁面上有一個報價:

我同意。在未來的其他地方我不會感到驚訝。

我喜歡Railo的方法是它是完全的沙箱。 主機A的標籤&函數庫永遠不會與主機B的 庫交叉/衝突,除非它們被放入全局服務器文件夾中。它也是虛擬文件系統的相同方式,幾乎所有的東西都是 (數據源等)。

它特別提到了Railo有一種創建UDF的方法,但我無法在任何地方找到任何文檔。由於我們使用Lucee,它是Railo的一個分支,我認爲它必須具備Railo創建UDF的功能。希望有人讀到這可以幫助我,並指出我在正確的方向。

回答

3

Railo/Lucee支持自定義功能。您可以在網站的/WEB-INF/{railo|lucee}/library/function/中聲明它們。將該功能保存在.cfm文件中,並將該文件命名爲與該功能相同。創建新功能後,服務器需要重新啓動。 Here is Railo's blog post about it.

Adob​​e ColdFusion不支持此AFAIK。所以你必須在這裏存儲你的函數在SERVER範圍內。

+0

每當服務器重新啓動時,WEB-INF目錄是否會被覆蓋? – Yamaha32088

+0

不,WEB-INF僅在Railo/Lucee服務開始時創建一次。該目錄然後保存並存儲設置。 – Alex

+0

真棒,我會給這個嘗試謝謝! – Yamaha32088