2

如果我的 application.cfc 中有组件级别的属性,它们会在每次页面时都会被评估,还是只会在创建应用程序时被评估?

<cfcomponent>
    <cfscript>
        this.name = "WARM2_Demo";
        this.applicationTimeout = CreateTimeSpan(1,0,0,0);
        this.setClientCookies = true;
        this.setDomainCookies = false;
        this.sessionManagement = true;
        this.sessionTimeout = CreateTimeSpan(0,0,30,0);
        this.clientManagement = false;
        this.scriptProtect = true;

        this.appDirectory = getDirectoryFromPath(getCurrentTemplatePath());
        this.fileSeparator = createObject("java","java.lang.System").getProperty("file.separator");

         ....

    </cfscript>

    <cffunction name="OnApplicationStart" returntype="boolean">
        <cfscript>
            setupApplication();
            return true;
        </cfscript>
    </cffunction>

        ....

</cfcomponent>
4

2 回答 2

4

Application.cfc 的伪构造函数在每个请求中执行。

基本上在幕后,每个请求都会创建一个 Application.cfc 实例,并且该实例化的行为就像任何其他 CFC 实例化一样:伪构造函数位 - CFCOMPONENT 标记内的东西,但没有任何 CFFUNCTION / 函数声明 - 运行。

运行伪构造函数后,运行任何适当的事件处理程序/拦截器方法,例如:onRequestStart()。

注意:您可以通过在其中输出一些内容来非常轻松地自己进行测试。它会在每次请求时显示在屏幕上(使其成为 getTickCount() 或 createUuid() 调用,以便您可以看到它的变化)。

于 2011-09-28T22:16:57.687 回答
0

我认为每次请求页面时都会进行评估。

把它们放在Application范围内onApplicationStart()

但老实说,fileSeparator?? 只需使用/,它就可以在 Windows 和 *nix OS 上正常工作。:)

于 2011-09-28T21:08:48.690 回答