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

ale*_*ale 3 coldfusion

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

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

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

Jak*_*sel 7

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

编辑

为了测试你刚才提到的关于与内置函数同名的自定义函数的注释,我做了一点测试,看看是不是这样.看起来你实际上可以构建与内置函数同名的函数,如果它们在自定义作用域内:

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


<cfset udf = {}>

<cfset udf.IsDefined = foo>

<cfoutput>#udf.IsDefined()#</cfoutput>
Run Code Online (Sandbox Code Playgroud)

此代码输出"bar".

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

foo.cfc

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

}
Run Code Online (Sandbox Code Playgroud)

和调用代码:

<cfset udf2 = createObject("component", "foo")>
<cfoutput>#udf2.isDefined()#</cfoutput>
Run Code Online (Sandbox Code Playgroud)