ColdFusion用户定义的函数名称的有效字符是什么?

时间:2011-12-05 16:01:11

标签: coldfusion

一点背景:我正在开发一个项目,将另一种脚本语言的webapp转换为ColdFusion。我遇到的一个问题是旧技术的某些功能名称与CF中的功能相同,但工作方式略有不同。不幸的是,在大多数情况下我需要旧功能,所以我打算编写自己的功能。

为了减少转换代码的麻烦,我计划为每个函数添加一个通常不在函数名中使用的字符,例如$val()

我知道$_在函数名称中有效。我可以使用其他任何角色吗?我问,因为我知道那里的一些框架使用这个约定,我不想在未来的开发中与任何这些框架发生冲突。以这种方式使用多个字符是不合理的,例如$_val()

1 个答案:

答案 0 :(得分:7)

对我来说使用$ _作为前缀似乎是合理的。当然,您也可以考虑通过包含在像'UDF'这样的自定义范围结构中,为您的函数提供一个自定义的“命名空间”,从而产生一个名为'UDF.val()'的函数;此外,您可以将它们一起打包在CFC中,并将它们作为组件方法访问。无论哪种方式,你都可以避免姓名冲突。

修改

为了测试您刚才对内置函数同名的自定义函数所做的评论,我做了一点测试,看看是否属实。看起来你实际上可以构建与内置函数同名的函数,如果它们在自定义范围内:

<cffunction name="foo">
    <cfreturn "bar">
</cffunction>


<cfset udf = {}>

<cfset udf.IsDefined = foo>

<cfoutput>#udf.IsDefined()#</cfoutput>

此代码输出“bar”。

或者,如果您喜欢CFC方法:

foo.cfc

component {
  function IsDefined()
  {
   return "blah";
  }

}

调用代码:

<cfset udf2 = createObject("component", "foo")>
<cfoutput>#udf2.isDefined()#</cfoutput>