タグ
ColdFusion には、ページの実行方法を制御するためのタグが用意されています。これらのタグは、if、then、else などのプログラミング言語のフロー制御ステートメントに対応します。ColdFusion のフロー制御タグには次のものがあります。
|
用途 |
---|---|
cfif 、 cfelseif 、cfelse |
式が True であるか False であるかに基づいて、実行するコードセクションを選択します。 |
cfswitch 、 cfcase 、cfdefaultcase |
式の値に基づいて、実行するコードセクションを選択します。case では、True、False 以外の条件判断も行うことができます。 |
cfloop 、cfbreak |
リストのエントリ、構造体または外部オブジェクトのキー、クエリ列のエントリ、インデックス、条件式の値などに基づいて、コードをループします。 |
cfabort 、cfexit |
ColdFusion ページまたはカスタムタグの処理を終了します。 |
CFScript にも一連のフロー制御ステートメントが用意されています。CFScript でのフロー制御ステートメントの使用については、CFML スクリプト言語による ColdFusion ページの拡張を参照してください。フロー制御タグの使用について詳しくは、『CFML リファレンス』の該当するタグに関するリファレンスページを参照してください。
cfif、cfelseif および cfelse
-
cfif タグで条件がテストされ、True の場合は本文が実行されます。
-
前の cfif (または cfelseif )のテスト条件が False であった場合は、 cfelseif タグで別の条件がテストされ、その条件が True の場合はその本文が実行されます。
-
cfelse タグはオプションで、cfif タグおよび 0 個以上の cfelseif タグの後に記述します。前にあるタグのテスト条件がすべて False であった場合に、その本文が実行されます。次の例に、cfif、cfelseif および cfelse タグの使用方法を示します。type 変数の値が "Date" の場合は日付が表示されます。"Time" の場合は時刻が表示されます。それ以外の場合は時刻と日付の両方が表示されます。
<cfoutput>#DateFormat(Now())#</cfoutput> <cfelseif type IS "Time"> <cfoutput>#TimeFormat(Now())#</cfoutput> <cfelse> <cfoutput>#TimeFormat(Now())#, #DateFormat(Now())#</cfoutput> </cfif>
cfswitch、cfcase および cfdefaultcase
cfswitch、cfcase および cfdefaultcase タグを使用すると、式の値に基づいて様々なコードブロックを選択できます。これらのタグは次のように処理されます。
-
まず、 cfswitch タグによって式が評価されます。この cfswitch タグの本文には、1 つまたは複数の cfcase タグが含まれ、オプションで cfdefaultcase タグで使用)
-
cfswitch タグ本文のそれぞれの cfcase タグを では、 1 つまたは一連の値が指定されています。cfswitch タグの式の評価値 に 一致する値が指定されている cfcase タグの本文コードが実行されたあと、 cfswitch タグが終了します。2 つの cfcase タグで同じ条件が指定されている場合は、エラーが発生します。
-
cfswitch タグの 評価値に 一致する cfcase タグが なく、 cfswitch タグの 本文に cfdefaultcase タグが 含まれている 場合は、 cfdefaultcase タグ 本文のコードが 実行されます。
cfdefaultcase タグは常に必要なわけではありませんが、 cfcase タグを使用するときは cfswitch ステートメントの最後に このタグを記述するのが よいプログラミングスタイルと言えます。
<cfswitch expression = #Department#> <cfcase value = "Sales"> #FirstName# #LastName# is in <b>Sales</b><br><br> </cfcase> <cfcase value = "Accounting"> #FirstName# #LastName# is in <b>Accounting</b><br><br> </cfcase> <cfcase value = "Administration"> #FirstName# #LastName# is in <b>Administration</b><br><br> </cfcase> <cfdefaultcase>#FirstName# #LastName# is not in Sales, Accounting, or Administration.<br> </cfdefaultcase> </cfswitch> </cfoutput>
cfloop と cfbreak
cfloop
cfloop タグには次のタイプのループがあります。
ループタイプ |
説明 |
---|---|
インデックス |
タグ本文をループし、ループするたびに指定の数だけカウンタ変数をインクリメントして、カウンタが指定の値になるまで続行します。 |
条件 |
条件を確認して、条件が True の場合にタグ本文を実行します。 |
クエリ |
クエリ内の行ごとにタグ本文を 1 回ループします。 |
リスト、ファイル、または配列 |
リストのエントリ、ファイルの行、または配列の項目ごとにタグ本文を 1 回ループします。 |
コレクション |
ColdFusion 構造体内のキーまたは COM/DCOM オブジェクト内の項目ごとにタグ本文を 1 回ループします。 |
簡単なインデックスループの例を次に示します。
The loop index is <cfoutput>#LoopCount#</cfoutput>.<br> </cfloop>
簡単な条件ループの例を次に示します。このコードは次の操作を行います。
-
4 番目のエントリに「kumquats」という単語が含まれている 10 要素からなる配列を設定します。
-
「kumquats」が含まれている配列要素を検出するか配列の最後に到達するまで、配列をループします。
-
「 kumquats 」を検出したかどうかを示すブール変数の値と、 ループを終了したときの配列インデックスを出力します。
終了条件を指定しないと、無限条件ループに陥ります。この例では、<cfset i = i + 1> ステートメントがないと無限ループになります。無限ループを終了するには、ColdFusion アプリケーションサーバーを停止する必要があります。
cfbreak
cfbreak タグは cfloop タグを終了します。特定の条件が満たされたときにループを終了するには、通常、 cfif タグの中でこのタグを使用します。クエリループでの cfbreak タグの使用例を次に示します。
<cfif fruit IS "kumquat"> <cfoutput>You cannot order kumquats! <br></cfoutput> <cfbreak> </cfif> <cfoutput>You have ordered #quantity# #fruit#.<br></cfoutput> </cfloop>