ColdFusionカフェテリア
SAMURAIZ
| ↑一覧へ戻る |
ColdFusionクリニックへようこそ
さて、、次のモヤモヤされている方は

他の人が作ったプログラムで、変数に Variables.を付けて呼び出しているのですが。。何故 Variables.を付けているのですか?

作成日: 2015年8月
最終更新日: 2015年8月

エラーではなく他の人が作ったプログラムコードを見ての疑問ですね。さっそく診てみましょう。。。下記の <cfoutput>タグの範囲内で変数を画面に表示しているところですね。

症状@
<cfset p1=1>
<cfset p2=2>
<cfset p3=3>
<cfset p4=4>
<cfset p5=5>

<cfoutput>
#Variables.p1#:#Variables.p2#:#Variables.p3#:#Variables.p4#:#Variables.p5#
</cfoutput>

   

■検診の結果

ColdFusionには10種類以上の変数が用意され、用途に応じてそれらを使い分けていきます。変数を呼び出す時に、“どの種類”の変数なのかを明示しておけば、.誤って別の種類の変数を呼び出してしまう事を防ぐことができます。そこで、変数名の前に変数の種類を表すスコープを指定します。

今回は「ローカル変数の」p1〜p5 を呼び出す処理をしていますが、変数名の前の「 Variables. 」の部分が「ローカル変数の」に相当します。

■治療法は?

<cfset>タグで変数をセットする際にも、実はスコープを指定する事ができます。スコープを指定しない場合(上記の<cfset の p1〜p5>)も、実は内部で Variables.p1 〜 Variables.p5 としてセットされています。

ですので、「ローカル変数=Variables.」と覚えておきましょう。

■今後の予防

ローカル変数を呼び出すときに Variables.変数名と書くように他の種類の変数を呼び出す時もスコープの指定をしていくようにしましょう。

  • Form変数を呼び出すときには Form.変数名 と記述します
  • URL変数を呼び出すときには Url.変数名と記載します
  • Cookie変数を呼び出すときには Cookie.変数名と記載します
  • Application変数やSession変数などは、スコープを書かないとエラーの原因となります。Application.変数名やSession.変数名と書いていきましょう

自分がプログラムを書く際も、このルールを守っていくことで、ColdFusion側でも変数の種類を特定した処理を行えますし、プログラムの見た目も認識しやすくなります。

下記の情報も参考下さい
スコープ固有のビルトイン変数

■おくすり出しておきますね〜(まめ知識)

ただ、Variables. という言葉自体、私たちにはなじみが薄いと思いますので、習い始めの頃や社内システムなど小規模なアプリケーションの場合は、かえって混乱を招くこともあります。不慣れな Variables という綴りを何度も記載すると誤ったスペルで記載したり、コードが見にくくなってしまいがちです。

慣れないうちは、以下のルールでプログラミングしていく事もあります。

  • “ローカル変数の呼び出しに限りスコープを付けない(Variables.を記述しない)”
  • ローカル変数以外は、必ずスコープを付ける

変数の呼び出しでスコープを付けない場合、下記のページに記載されている順番で変数を探しにいきます。

スコープが指定されていない変数の評価

ローカル変数は 6番目に探しにいきますが、1〜5番目は特定の用途での処理に限って使う変数なので、(特に最初のころに)遭遇する機会もほとんど無く、ローカル変数が最初に呼び出される変数となるためです。

※逆にForm変数やCookie変数は順番が最後の方なので、スコープを付けないと、別の種類の同じ名前の変数を呼び出されてしまう危険があります。

お大事に〜
ColdFusionの各種情報の配信


最新情報
■2017/3/27
ColdFusion 2016 対応
インストール セットアップ情報
CFサーバーのインストール
CFビルダーのインストール

■2016/9/20
『ColdFusion 2016 リリース
Enterprise Edition 活用資料』
記事一覧

■2016/3/30
『ColdFusion 実験室』
実験4、実験5

■2015/8/10 〜
『ColdFusion クリニック』
記事一覧(随時更新中)

■2015/4/8
『JasperReportsによる帳票出力』
2. JasperReportsによる帳票出力【後編】

■2015/3/12
アップクロス株式会社
西元 貞昭様
『JasperReportsによる帳票出力』
1. JasperReportsによる帳票出力【前編】


■2015/2/25
『ColdFusionでエクセルを使いこなそう!』
4. 【上級】ColdFusionのエクセル機能を利用したPDF帳票の紹介

ColdFusionトレーニング


ColdFusionユーザーグループ
ColdFusionユーザーグループ
Copyright 2012 Samuraiz Corporation. All Rights Reserved.