1

私は通常、Application.cfcの最初の行にアプリケーション全体のデータソース名を設定します。

<cfscript>THIS.datasource="mydsn";</cfscript>

コードの特定の部分で変更する必要がある場合はどうなりますか?

具体的には、次のことを意味します。

  • cgi.server_nameが"www.firsturl.com"=> this.datasource="firstdsn"と等しい場合
  • cgi.server_nameが"www.secondurl.com"=> this.datasource="seconddsn"と等しい場合

リクエストごとにそれを行うことはできますか?

4

1 に答える 1

5

OK、あなたの元の投稿に対する私のコメントにもかかわらず、これらのことを見つける最良の方法は、それを試して何が起こるかを確認することです。答えは「はい」です。

Application.cfcは、一種のアプリケーション固有であることを意味するため、名前が適切ではありませんが、実際には、すべてが要求ごとにインスタンス化されます。一部のイベントハンドラーが特定の状況(onApplicationStart / onSessionStartなど)でのみ実行されることは、ここにもそこにもありません。すべてがすべての要求を実行します。したがって、インスタンス化される他のCFCと同様に、疑似コンストラクターコード(このスコープの変数宣言を行う場所)もすべての要求で実行されます。

つまり、はい、REQUEST固有の情報(リクエスト、CGI、URL、FORMなど。ただし、アプリケーションやセッションは不可)に基づいて、これらの変数を条件付きで設定できます。したがって、CGI変数に基づく条件は問題なく機能します。

しかし、私の言葉を信じないでください。試してみてください。常にこれらのことを試してください。

最後に、少しだけプラグインするために、この記事のブログで、Application.cfcで処理が実行されるタイミングについて詳しく説明します。たぶんそれを読んで、そしてたぶんあなたがそこにいる間にApplication.cfcの他の記事を見てください。

于 2012-09-19T13:48:19.757 に答える