簡體   English   中英

運用 <cfinvoke> 在ColdFusion中

[英]Using <cfinvoke> in ColdFusion

我想編寫一個服務器端驗證代碼來驗證頁面上的所有用戶輸入。 我想保留所有來自表示層的服務器端驗證。 現在,我正在研究創建一個組件,並將所有驗證功能保留在其中。 我將使用<cfinvoke>標記訪問用戶頁面上的驗證方法。 但是問題是我必須對大約50個用戶輸入應用驗證,並且需要使用<cfinvoke>標記50次。 誰能告訴我多次使用<cfinvoke>會影響性能,還是我可以采用其他更好的方法?

使用<cfinvoke>沒有明顯的開銷。 但我仍然建議您在這里避免這種情況。 相反,請考慮以下示例(示例):

Validator.cfc

<cfcomponent>

    <cffunction name="validateX" access="public" ...>
        ...
    </cffunction>
    <cffunction name="validateY" access="public" ...>
        ...
    </cffunction>
    <cffunction name="validateZ" access="public" ...>
        ...
    </cffunction>

</cfcomponent>

controller.cfm

<cfset validator = new Validator()>

<cfset validator.validateX(...)>
<cfset validator.validateY(...)>
<cfset validator.validateZ(...)>
...

現在,您可以輕松處理驗證結果。

如果返回布爾值:

<cfif validator.validateX(...)>
    ...
<cfelse>
    ...
</cfif>

如果返回錯誤數組:

<cfset errors = []>
<cfset errors.addAll( validator.validateX(...) )>
<cfset errors.addAll( validator.validateY(...) )>
<cfset errors.addAll( validator.validateZ(...) )>

等等

<cfinvoke>創建Class的實例( new Validator() ),並以相同方式調用方法validateX(...) 主要區別在於:在每個<cfinvoke>上都重新創建實例,並且必須將return指定為輸入變量( returnVariable ),在大多數情況下這很麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM