2012-03-01 4 views
1

私はColdFusion 9.0.1を使用していますどちらを使うのが適切なのですか?

私は他のページを含むページを実行しています。このページの主な目的は、どのページを含めるかを決定することです。含まれるページは、このページで使用する変数(この場合はMovieID)を使用します。

私の質問は、このページで使用するにはどの範囲が最適ですか?それは変種でしょうか?

<cfscript> 
Lookup = CGI.QUERY_STRING; 
Query = CFC.doLookup(Lookup); 
if (Query.RecordCount == 0) { 
    include "Content/Home.cfm"; 
} else { 
    // MOVIE PAGE 
MovieID = Query.MovieID; // WHAT SCOPE SHOULD I USE HERE? FOR MOVIEID? 
include "Content/Movie.cfm"; 
} 
</cfscript> 

答えて

3

はい: 変数

多分: アプリケーション、クッキー、リクエスト、サーバー、セッション

番号: 引数、属性、発信者、CGI、クライアント、フラッシュ、フォーム、ローカル、This ThisTag、スレッド、スレッドローカル、URL

各スコープについては、che ck CF9のドキュメント:scope types

Front Controller patternを実装しているようなサウンドです。

コードスニペットを実行するonRequest()を使用してApplication.cfcを実装します。そうすれば、すべての着信要求を傍受し、適切なcfmを組み込むことになります。単に他のcfmテンプレートを含むハンドラindex.cfmが必要ない。

さらなる最適化。 doLookup()メソッドは、使用しているすべてのものとして現れるように、recordCount + movieIdだけを含むStructを返します。クエリ全体を返すのは、2つの数値の単なる構造体よりも遅いです。

CF9ドキュメント:Application.cfc

+0

追加情報(Wikiリンク)と、コントローラをApplication.cfcに移動することをお勧めします。これに言及したら、それは完璧なアイデアです。どうもありがとう!!! –

+0

Query.MovieIDも使用されている可能性があり、多かれ少なかれ読み取り専用になりました。 –

3

Variables(これはあなたが現在行っているものです)は確かに動作します。他の合理的な選択肢はRequestですが、私はvariablesに向かってrequestに傾いています。

+0

ジェイク、私の考えを明確にして確認してくれてありがとう。ほんとうにありがとう。 –

2

もののいずれかVariablesスコープまたはVariables範囲は、一般に認識されている一方、それは要求内の任意のファイルが利用可能であることが意図されている範囲である限り有用であり得るRequestスコープを使用して、含まれるページに利用できるようになりRequest範囲、特定のページに固有のもの

実際には、Requestスコープはもともとカスタムタグ間で変数を共有する目的でAllaire Spectraに導入されました。

だから、両方ともあなたが望むことをしますが、私はRequestスコープがちょっとだけ意図を明らかにするという小さな利点があると言います。

+0

ええ、REQUESTには若干の利点があるようです。情報をありがとう! –

関連する問題