我正在使用 ColdFusion 9 并检查了文档,但它是模棱两可的。
(我有 PHP 背景,正在寻找类似于 PHP 常量的东西)
谢谢
我正在使用 ColdFusion 9 并检查了文档,但它是模棱两可的。
(我有 PHP 背景,正在寻找类似于 PHP 常量的东西)
谢谢
不,ColdFusion 没有常数。我认为在大多数情况下,开发人员只是设置一个变量,使用一些命名约定,例如 ALL_CAPITALS 中的变量名,然后永远不要更改它的值。这并不是像其他语言那样真正的常量,您必须小心不要更改值(因为它不是真正的常量)。我之前已经这样做过,并且通常在应用程序范围内设置这些“常量”,以便它们随时可用。
不久前有一个增强请求打开。但是,它似乎已被关闭和推迟。
Adam Cameron去年曾在博客中提到过这件事,并引用了相同的增强请求。
不,不是作为母语功能。您链接到的页面中的关键位是“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 解决方案那样简洁,这是我大部分时间使用的解决方案,但它作为另一种选择在这里。
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);
}