CFSET  
説明

ColdFusion の値を設定します。変数が存在しない場合は変数を作成し、値を割り当てます。また、関数の呼び出しにも使用されます。

 
カテゴリ

変数操作タグ

 
シンタックス
<cfset
   var variable_name = expression
   >
 
関連項目

cfcookie、cfparam、cfregistry、cfsavecontent、cfschedule、『ColdFusion MX 開発ガイド』の第2章の「CFML の要素」

 
使用方法

ここでは、cfset タグの使用方法について詳しく説明します。

 
関数の呼び出し

cfset タグを使用して関数を呼び出すときに、その関数が値を返さない場合や、関数から返される値を使用する必要がない場合は、関数の戻り値を変数に代入する必要はありません。たとえば、次の例は、Application スコープから MyVariable 変数を削除するための有効な ColdFusion cfset タグです。

<cfset StructDelete(Application, "MyVariable")> 
 
配列

次の例では、新しい配列を変数 months に割り当てます。

<cfset months = ArrayNew(1)>

次の例では、配列 Scores の長さに変換される変数 Array_Length を作成します。

<cfset Array_Length = ArrayLen(Scores)>

次の例では、配列 months 内のインデックス位置 2 に値 February を割り当てます。

<cfset months[2] = "2 月">
 
ダイナミックな変数名

次の例では、変数名自体が変数となっています。

<cfset myvariable = "current_value">
<cfset "#myvariable#" = 5>
 
関数のローカル変数

var キーワードにより、定義中の変数が、cffunction タグで定義する関数の本文内でのみ利用可能であることを指定します。関数の 1 つの呼び出しで設定された変数の値は、関数の他の呼び出しでは利用できません。var キーワードは、CFScript の var ステートメントに相当します。var キーワードを使用する場合は、次のルールが適用されます。

  • var キーワードを使用するすべての cfset タグを、cffunction タグの本文内に置く必要があります。cffunction タグの外にある cfset タグ内で var キーワードを使用すると、ColdFusion のエラーメッセージが表示されます。
  • var キーワードを使用するすべての cfset タグを、cffunction タグ本文の最初、つまり、他のあらゆる ColdFusion タグの前に置く必要があります。

次の例では、この新しいキーワードの使用方法を示します。

<cffunction name="myFunct">
   <cfset var myVar = "This is a test">
   <cfreturn myVar & " Message.">
</cffunction>
<cfoutput>#myFunct()#</cfoutput>

この例では、関数 myFunct が実行されるときにのみ変数 myVar が存在し、ColdFusion ページの他の場所ではこの変数を利用できません。

 
COM オブジェクト

次の例では、COM オブジェクトが作成されます。cfset を使用して、COM オブジェクトのインターフェイス内のメソッドまたはプロパティごとに値を定義します。最後の cfset では、COM オブジェクトの SendMail メソッドからの戻り値を保管する変数を作成します。

<cfobject action = "Create"
   name = "Mailer"
   class = "SMTPsvg.Mailer"> 

<cfset MAILER.FromName = form.fromname> 
<cfset MAILER.RemoteHost = RemoteHost> 
<cfset MAILER.FromAddress = form.fromemail> 
<cfset MAILER.AddRecipient("form.fromname", "form.fromemail")> 
<cfset MAILER.Subject = "Testing cfobject"> 
<cfset MAILER.BodyText = "form.msgbody"> 
<cfset Mailer.SMTPLog = "logfile"> 
<cfset success = MAILER.SendMail()> 
<cfoutput> #success# </cfoutput>
 
<!--- この例では、cfset の使用方法を示します。 --->
<cfquery name = "GetMessages" dataSource = "cfsnippets">
   SELECT *
   FROM  Messages
</cfquery>

<h3>cfset の例</h3>
<p>cfset では、ページ内のローカル変数またはグローバル変数に値を設定したり、再び割り当てたりします。

<cfset NumRecords = GetMessages.recordCount>
<p>たとえば、クエリーから返されるレコードの数を保持するために、変数 NumRecords がこのページで宣言されて
います 
(<cfoutput>#NumRecords#</cfoutput>)。

<p>さらに、この例のように、cfset を使用して他のページから変数を渡すことができます。ここでは、url パラ
メータ Test をこのリンクから取得しています。 
(<a href = "cfset.cfm?test = <cfoutput>
                  #URLEncodedFormat("hey, you, get off of my cloud")#               </cfoutput>
               ">ここをクリック</A>) してメッセージを表示してください。 
<p>
<cfif IsDefined ("url.test") is "True">
   <cfoutput><b><I>#url.test#</i></b></cfoutput>
<cfelse>
   <h3>変数 url.test は、他のページから渡されませんでした。</h3>
</cfif>

<p>cfset は、時刻、ユーザーの IP アドレス、その他の関数や式などの環境変数の収集にも使用できます。

<cfset the_date = #DateFormat(Now())# & " " & #TimeFormat(Now())#>
<cfset user_ip = CGI.REMOTE_ADDR>
<cfset complex_expr = (23 MOD 12) * 3>
<cfset str_example = Reverse(Left(GetMessages.body, 35))>

<cfoutput> 
   <ul> 
      <li>日付 :#the_date#
      <li>ユーザーの IP アドレス :#user_ip#
      <li>複合式 ((23 MOD 12) * 3):#complex_expr#
      <li>文字列の操作 (クエリー内の最初のメッセージ本文の 
            最初の 35 文字)
            <br><b>逆</b>:#str_example# 
            <br><b>正</b>:#Reverse(str_example)#
   </ul> 
</cfoutput> 
VAR  
  オプション
 

キーワードです。値は取りません。変数が関数に対してローカルであることを示します。変数は、関数の現在の呼び出しの間だけ存在します。

VARIABLE_NAME  
  必須
 

変数です。