属性范围与属性结构

时间:2012-11-20 15:44:56

标签: coldfusion attributes custom-tag

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

我还看过其他一些应用程序(可能还有ColdBox?),其中开发人员将所有内容都放入属性结构中。例如,在login.cfm

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

除了必须指定attributes.foo以确保提高可读性之外,还有其他一点,我承认但为什么要重用一个完整范围的名称?

这是个人偏好还是遗漏了属性范围的深刻内容?

2 个答案:

答案 0 :(得分:5)

这没什么了不起的。许多框架(和个别开发人员)喜欢将表单和url作用域组合成一个“事件”对象或某些东西(例如你的“属性”),但它并没有真正为你带来太大的收获。

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

你总是可以通过variables.attributes.foo来引用这个对象来显示,但这很痛苦而且有点难看。当然,没有什么能阻止你访问属性范围(范围优先级会在variables.attributes之前检查属性),但是那些在你更困惑之后必须阅读代码的人。它本质上是一个问题,而不是解决问题。

答案 1 :(得分:0)

在Fusebox中,我们的想法是单个文件既可以用作框架的一部分,也可以用作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