一点背景:我正在开发一个项目,将另一种脚本语言的webapp转换为ColdFusion。我遇到的一个问题是旧技术的某些功能名称与CF中的功能相同,但工作方式略有不同。不幸的是,在大多数情况下我需要旧功能,所以我打算编写自己的功能。
为了减少转换代码的麻烦,我计划为每个函数添加一个通常不在函数名中使用的字符,例如$val()
。
我知道$
和_
在函数名称中有效。我可以使用其他任何角色吗?我问,因为我知道那里的一些框架使用这个约定,我不想在未来的开发中与任何这些框架发生冲突。以这种方式使用多个字符是不合理的,例如$_val()
?
答案 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>