2013-04-25 110 views
7

我正在使用ColdFusion 9並檢查了文檔,但它不明確。ColdFusion是否支持常量?

http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0999c-7ff1.html

(我有PHP背景,尋找類似的PHP常量的東西)

感謝

+0

這個位表示_「ColdFusion不允許您給常量賦名」。_表示您不能創建自己的常量(就像使用PHP的定義函數一樣)。您當然可以使用變量和合適的編碼準則,如[Miguel下面描述](http://stackoverflow.com/questions/16220215/are-constants-supported-in-coldfusion#16220446)。 – 2013-04-25 16:52:45

回答

19

不,ColdFusion的沒有常數。我認爲在大多數情況下,開發人員只需使用一些命名約定(如ALL_CAPITALS中的變量名稱)設置一個變量,然後永遠不會更改它的值。這在其他語言中並不是一個常量,您必須小心不要改變它的值(因爲它不是一個真正的常量)。我之前完成了這個工作,通常在應用程序範圍內設置這些「常數」,以便隨時可用。

有一個enhancement request開了一會兒回來。但是,它看起來已經被關閉並推遲了。

Adam Cameron blogged about this very thing last year並引用相同的增強請求。

10

不,不作爲母語功能。您鏈接到的頁面中的關鍵位是「ColdFusion不允許您給常量賦予名稱」

我認爲頁面真的是在談論文字而不是常量。

如果你想支持不可改變的常量,我認爲你需要使用一個對象來封裝值:

component displayname="constant values for my app" { 
    property name="mailServer" default="127.0.0.1" getter=true setter=false 
    property name="password" default="supersecret" getter=true setter=false 
} 

然後,您可以設置這個在你需要它(如申請或要求爲準範圍)然後調用application.constants.getMailServer()

它不像@ Miguel-F解決方案那樣簡潔,這是我大部分時間使用的解決方案,但它在這裏是另一種選擇。