ColdFusion基礎プログラミング



2-11変数を呼び出す(参照する)

ColdFusion には多くの種類の変数が用意されています。例えば、本コースでは、下記の種類の変数を学習します。

  • ローカル変数
  • クエリ変数
  • Form 変数
  • URL 変数
  • Application 変数、Session 変数

先ほどローカル変数(#LastName# #FirstName#)を画面に表示する方法を学習しましたが、もしも別の種類の変数にも同じ名前の変数がセットされていた場合、例えばURL 変数の#LastName# を呼び出したつもりが、ローカル変数の#LastName# を呼び出してしまったという事にもなりかねません。
ColdFusion には、変数同士を混同することなく種類を特定して呼び出すための接頭辞が用意されています。ローカル変数の場合は、接頭辞「Variables.」を付けて変数名を指定することで、明示的にローカル変数の値を呼び出します。先ほどの実習に当てはめると#Variables.LastName# #Variables.FirstName# となります。
パフォーマンスを考慮するだけでなく、コードの保守のためにも、変数を呼び出す際には適切な接頭辞をつけることが推奨されています。

メモ:Variables という馴染みの薄い言葉が、コードを見にくくしたり打ち間違いを誘発する原因になり、かえって混乱を招く可能性もありますので、トレーニングや自己学習の時は、ローカル変数に限り接頭辞を付けない(Variables. を省き変数名のみを記載していく)というルールで進めて行くこともできます。

変数を他の変数に代入する

変数の値に他で設定した変数を代入する場合は、引用符を付けずに変数名を記載します。ColdFusion は引用符のない文字列があった場合はそれを変数として捉え、変数の値を代入します。
以下の例では、ローカル変数num2 の値には15 がセットされます。


<cfset num1=15>
<cfset num2=num1>


変数と変数、変数と文字列をつなげて代入する

変数の値をセットする際に、ある変数を代入して新しい文字列を作成したり、変数と別の変数とをつなげた文字列を作成する場合があります。“変数と変数”や“変数と文字列”の連結文字として&マークを使用します。
以下の例では、変数 Greeting には変数の値と文字列がセットされます。


<cfset FirstName="サムライズ">
<cfset Greeting=Variables.FirstName & " さん、こんにちは">


ローカル変数Greeting には「サムライズ さん、こんにちは」がセットされます。


処理に応じた変数の型の変換

ColdFusion の開発者は変数をセットする時に、変数に格納される値のタイプ(数字であるか日付であるかなど)を認識する必要がありません。変数にアクセスがあり、何らかのデータタイプが予測される(例えば変数内で計算処理を行った)場合、ColdFusion はその変数を内部で自動的に予測したタイプにキャスト(変換)されます。もし、変数の値のキャストが行えなかった場合、エラーが発生して処理が中断します。
例えば、以下のコードはエラーが発生します。


<cfset FirstName=" サムライズ">
<cfset FullName=Variables.FirstName+" さん、こんにちは">


以下は変数の算術演算が可能な例です。変数NewNum には、ローカル変数のTheNum に指定された値(100)+25 の合計125 がセットされます。


<cfset TheNum="100">
<cfset NewNum=Variables.TheNum+"25">
<cfset TheString=" 新しい番号:" & Variables.NewNum>


この処理の結果として、3 行目の変数TheString には、「新しい番号: 125」という文字列がセットされます。

メモ:他の言語と同様、ColdFusion 内部でも変数の型は管理されています。特に、他のシステムとデータを連携する際などに、型を意識して値をやりとりする機会が増えているためです。ですが、ColdFusion 内部での処理に限れば、変数の型を意識しなくてもColdFusion が自動で変数の型を判断して処理をしてくれます。