2

最初の application.cfc ファイルをセットアップしようとしています。

次のように「イベントベース」で変数を呼び出そうとしました:

<cffunction name="onApplicationStart" returnType="boolean" output="false">
    <cfparam name="Application.RootDir" default="/">
    <cfreturn true>
</cffunction>

<cffunction name="onSessionStart" returnType="boolean" output="false">
    <cfparam name="Session.activeSession" default="Yes">
    <cfparam name="Session.activeLogin" default="No">
    <cfreturn true>
</cffunction>

私はこれがうまくいくと思っていましたが、次のようにすべてを事前に宣言する必要があるため、そうではありません。

 <cfparam name="Application.RootDir" default="">
 <cfparam name="Session.activeSession" default="">
 <cfparam name="Session.activeLogin" default="">

私の質問:
変数の宣言に CF イベントを使用する必要があるのはなぜですか。とにかくイベントの外で宣言する必要がある場合は、コード行を節約して、初期値を宣言して割り当てることができますか? 私はそれを間違っていますか、それとも宣言するためのイベントではありませんか?

ご意見ありがとうございます。

4

1 に答える 1

3

「前に」(「前にすべてを宣言する」)とはどういう意味ですか?何の前に?onApplicationStart()ハンドラーは、アプリケーションの開始時に最初に実行されるものであり、onSessionStart()ハンドラーは、セッションの開始時に最初に実行されるものです。したがって、アプリケーションとセッションが確立されている状況では、「前」はありません。より多くのコードを表示する必要があると思います。たとえば、「機能していない」ことを示すコードなどです。

とはいえ、Application.cfcの疑似コンストラクターセクションは表示されないため、そこにどのような問題があるかを判断することは不可能です。ただし、セッションが機能する前にセッション管理を有効にする必要があります。また、アプリケーション変数またはセッション変数のいずれかが固定される前に、アプリに名前を付ける必要があります(ただし、名前のないアプリケーションでも機能する可能性がありますか?機能する場合でも、アプリに名前を付けます)。

最後に、これは変数が設定されているかどうかには関係ありませんが、変数を<cfset>設定するときは、ではなくを使用する必要があります<cfparam>。ここではどちらも同じ効果がありますが、前者がその仕事に適したツールです。

于 2012-04-28T12:37:09.257 に答える