我正在使用ColdFusion 9并检查了文档,但它不明确。
http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0999c-7ff1.html
(我有PHP背景并寻找类似于PHP常量的东西)
由于
答案 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);
}