ColdFusion中是否支持常量?

时间:2013-04-25 16:37:27

标签: coldfusion coldfusion-9

我正在使用ColdFusion 9并检查了文档,但它不明确。

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

(我有PHP背景并寻找类似于PHP常量的东西)

由于

3 个答案:

答案 0 :(得分:19)

不,ColdFusion没有常量。我认为在大多数情况下,开发人员只需使用一些命名约定(例如ALL_CAPITALS中的变量名称)设置变量,然后永远不会更改它的值。这在其他语言中并不是一个常数,你必须要小心不要更改值(因为它不是真正的常量)。我以前做过这个,通常在应用程序范围内设置这些“常量”,以便随时可用。

前一阵开了enhancement request。但是,看起来它已被关闭并推迟。

Adam Cameron blogged about this very thing last year并引用相同的增强请求。

答案 1 :(得分: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解决方案那么简洁,这是我大部分时间都在使用的解决方案,但它是另一种选择。

答案 2 :(得分:1)

ColdFusion 2018及更高版本支持关键字final。 Final与常量很像,只是声明时不必设置它。一旦设置,就无法更改。

// This is good
function myExample(){
    final max=50;
    writeoutput("final variable is: " & max);
}


// This is bad
function myExample(){
    final max=50;
    max = 100
    writeoutput("final variable is: " & max);
}

有关更多信息,请参见:https://helpx.adobe.com/coldfusion/developing-applications/building-blocks-of-coldfusion-applications/object-oriented-programming-coldfusion.html#final