2010-12-18 65 views
1

查看CFC中的以下函數(我正在使用ColdFusion 9)。從其中調用另一個函數時,函數是否停止處理?

假設oldObject is trueit is type 1,確實的ColdFusion繼續,直到函數的末尾,並創建新的對象,或者它「胸圍出」上<cfset respond(result=false)>和在功能中止任何進一步的處理?

<cffunction name="myFunction" access="private"> 

    <cfargument name="key"> 

    <cfset oldObj = model("myModel").findOne(arguments.key)> 
    <cfset local.data = 1> 

    <cfif isObject(oldObj)> 

     <cfif oldObj IS 1> 
     <cfset respond(result=false)> 
     <cfelse> 
     <cfset local.data = 2> 
     </cfif> 

    </cfif> 

    <cfset newObj.new(local.data)> 

<cffunction> 

的想法是這樣的:

  1. 如果oldObject(1)存在和(2)爲1型,出局並沒有做任何事情。
  2. 如果oldObject存在且不是類型1,則修改local.data並創建新對象。
  3. 如果oldObject不存在,只需創建未修改的新對象local.data

respond()函數只是通過JSON結構向用戶返回數據。我省略了很多代碼,因爲這是一個理論問題。

回答

2

你的算法繼續到函數的結尾。只有一個<cfreturn>會在結束之前退出該功能。所以<cfset newObj.new(local.data)>總是會到達。

要輸出JSON內聯(即<cfoutput>#json#</cfoutput>。),請確保respond()未指定<cffunction name="respond" output="false" ...>

請注意,假設這些函數駐留的較大對象是有狀態的,則更簡潔的方法是根據需要調用客戶端方法。讓對象內部將響應作爲其狀態的一部分進行拼湊。最後,客戶端沿着getResponse()函數的行呼叫。

相關問題