2010-12-18 8 views
1

(私はColdFusion 9を使用しています)CFCで次の関数を見てください。他の関数が呼び出されたときに処理を停止しますか?

oldObject is trueit is type 1ことは、ColdFusionは、関数の最後まで続行し、新しいオブジェクトを作成するか、またはそれは<cfset respond(result=false)>の「バストアウト」をし、関数内で任意の更なる処理を中止しないと仮定すると? oldObject(1)が存在し、(2)タイプ1のものであり、アウトバストと何もしない場合

  1. <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> 
    

    アイデアがこれです。

  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()の行に沿って何かを呼び出しています。

関連する問題