2012-11-20 130 views
1

自定义标记具有属性范围。凉。属性范围vs属性结构

我还见过其他一些应用程序(可能还有冷库?),开发人员将所有内容都放入属性结构中。

例如login.cfm

<cfparam name="attributes.username" default="some value">

有没有点这个除了具有指定attributes.foo这确实提高可读性,我承认,但为什么重用全范围的名字吗?这是个人偏好还是我缺少属性范围的深刻内容?

谢谢。

回答

5

这没什么深刻的。很多框架(和个人开发人员)喜欢将表单和url范围合并成一个“事件”对象或其他东西(例如你的“属性”范例),但它并不会真正给你带来太多的收益。

也就是说,在现有范围之后命名新对象被误导了,我建议不要这样做。当你想要属性范围内的东西而不是属性对象时会发生什么?

你总是可以通过variables.attributes.foo来引用对象的显式性,但这是一种痛苦,有点难看。当然,没有任何东西阻止你访问属性范围(范围优先权将检查变量属性之前的属性),但是之后必须阅读代码的人更加困惑。它本质上是一个问题,而不是解决问题。

+0

我下面的回答有更多的细节 –

0

在熔丝盒中,想法是可以将单个文件用作框架的一部分,也可以将其用作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的细节

+0

詹姆斯,我没有看到你指的是什么呢?该链接中没有提到cfmodule? –

+1

一般来说,但在这种情况下,将相关文本直接引用到您的答案中(使用'>'来标记报价)是有用的,尽管当然还包括归属地址。 –