2012-11-20 182 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

一般來說,但在這種情況下,將相關文本直接引用到您的答案中(使用'>'來標記報價)是有用的,儘管當然還包括歸屬地址。 –