自定义标记具有属性范围。凉。属性范围vs属性结构
我还见过其他一些应用程序(可能还有冷库?),开发人员将所有内容都放入属性结构中。
例如login.cfm
<cfparam name="attributes.username" default="some value">
有没有点这个除了具有指定attributes.foo
这确实提高可读性,我承认,但为什么重用全范围的名字吗?这是个人偏好还是我缺少属性范围的深刻内容?
谢谢。
自定义标记具有属性范围。凉。属性范围vs属性结构
我还见过其他一些应用程序(可能还有冷库?),开发人员将所有内容都放入属性结构中。
例如login.cfm
<cfparam name="attributes.username" default="some value">
有没有点这个除了具有指定attributes.foo
这确实提高可读性,我承认,但为什么重用全范围的名字吗?这是个人偏好还是我缺少属性范围的深刻内容?
谢谢。
这没什么深刻的。很多框架(和个人开发人员)喜欢将表单和url范围合并成一个“事件”对象或其他东西(例如你的“属性”范例),但它并不会真正给你带来太多的收益。
也就是说,在现有范围之后命名新对象被误导了,我建议不要这样做。当你想要属性范围内的东西而不是属性对象时会发生什么?
你总是可以通过variables.attributes.foo来引用对象的显式性,但这是一种痛苦,有点难看。当然,没有任何东西阻止你访问属性范围(范围优先权将检查变量属性之前的属性),但是之后必须阅读代码的人更加困惑。它本质上是一个问题,而不是解决问题。
在熔丝盒中,想法是可以将单个文件用作框架的一部分,也可以将其用作cfmodule的一部分。里面corefiles的/的Application.cfc是:
...
<cfparam name="variables.attributes" default="#structNew()#" />
<cfif isDefined("URL")>
<cfset structAppend(attributes,URL,true) />
</cfif>
<cfif isDefined("form")>
<cfset structAppend(attributes,form,true) />
</cfif>
...
见GitHub的细节
詹姆斯,我没有看到你指的是什么呢?该链接中没有提到cfmodule? –
一般来说,但在这种情况下,将相关文本直接引用到您的答案中(使用'>'来标记报价)是有用的,尽管当然还包括归属地址。 –
我下面的回答有更多的细节 –