使用CFC继承/扩展时暂存我的Coldfusion应用程序

时间:2009-11-04 23:08:22

标签: inheritance coldfusion cfc application.cfc

我在webroot的子目录中有一个application.cfc:

/app/application.cfc

我最近在其子目录中添加了另一个application.cfc,它使用此处描述的代理方法http://corfield.org/blog/index.cfm/do/blog.entry/entry/Extending_Your_Root_Applicationcfc扩展了原始application.cfc:

/app/mysubdir/application.cfc
/app/applicationproxy.cfc

subdir cfc的extends属性如下所示:

<cfcomponent extends="app.applicationProxy">

这一切都运行良好到目前为止,但这里有更多背景:我已经通过将它放在/ app called / appstaging旁边的目录中来暂存我的应用程序。这样可以正常工作,即没有冲突,因为我使用了所有相对路径,而我的更高级别的application.cfc确定了它所在的dir,设置了一个变量(例如application.appdir),代码可以用它来构建相对路径如果需要的话。

这是我的问题:现在我有了新的/app/mysubdir/application.cfc,如果这是staging目录树,我需要扩展的路径才能真正成为“appstaging.applicationProxy”。尽管ColdFusion坚持认为“extends”的值是不变的。它不会让我弄清楚我在哪里,并把它放在正确的名字上,就像我在其他地方一直在做的那样。

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

如果您使用的是CF8,请在application.cfc中使用新的this.mappings结构。看起来大致如此。我会让你写下代码来判断你是在/ app还是/ appstaging:

如果(inAppStaging)   this.mappings [“/ app”] = expandPath(“/ appstaging”); //或其他......只需获取应用程序目录的完整路径

这样,当这个application.cfc在/ app下运行时,它就会像往常一样工作。当它在appstaging中运行时,它会告诉coldfusion对于这个应用程序,“app”指向“appstaging”。