2013-04-25 112 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解决方案那样简洁,这是我大部分时间使用的解决方案,但它在这里是另一种选择。