Inheritance 继承他人功能的ColdFusion组件

Inheritance 继承他人功能的ColdFusion组件,inheritance,coldfusion,components,extends,cfc,Inheritance,Coldfusion,Components,Extends,Cfc,我有两种简单的CFC,如下所示: Test1.cfc <cfcomponent> <cffunction name="initMethod1" access="private" returntype="boolean"> <cfreturn true /> </cfcomponent> 测试2.cfc <cfcomponent> <cffunction name="initMethod2" access="

我有两种简单的CFC,如下所示:

Test1.cfc

<cfcomponent> 
  <cffunction name="initMethod1" access="private" returntype="boolean"> 
  <cfreturn true />
</cfcomponent>

测试2.cfc

<cfcomponent> 
  <cffunction name="initMethod2" access="private" returntype="boolean"> 
  <cfreturn true />
</cfcomponent>

在Application.cfc的OnApplicationStart()过程中,我进行了以下调用:

<cfset application["Test1"] = CreateObject("component","jbx.c.Test1") />
<cfset application["Test2"] = CreateObject("component","jbx.c.Test2") />

当我转储应用程序范围时,请注意下面两个组件都有自己的功能以及另一个组件的功能。知道这是为什么吗?如何纠正?谢谢


因为您将其与onApplicationStart()绑定,所以它们是在您第一次访问该网站时创建的。重置应用程序变量的快速方法是重命名应用程序

当我开发我知道将要在应用范围内的cfc时,我会计算出请求范围内的所有细节,然后一旦这些工作正常,我就移动应用范围

另一件对调试此类问题有用的事情是

application.initialized = now();

这样,当您转储应用程序作用域时,您就知道它是何时设置的。

感谢您的快速回复。我将应用程序名设置为随机创建,在请求范围(而不是应用程序范围)中创建这些对象,甚至跳转CF服务,结果都得到了相同的条件。听起来好像正在进行缓存。把一个语法错误放在其中,我打赌你仍然能够“创建”这个对象。这将确认您存在缓存问题。检查CF管理员以确保组件缓存已关闭。感谢您查看此信息。我根据您的建议确定这不是缓存问题。我没有在上面的代码中包括的一点是,这两个组件实际上使用extends=“someSuperClass”扩展了另一个组件。但是,当如上所述实例化它们时,即使没有extends属性的函数也会继承超类函数。在另一个函数中添加一个额外的函数,看看会发生什么我看不出这个答案实际上是如何回答你的问题的(尽管它被标记为这样),因为从它的声音来看,你从来没有真正了解到底发生了什么?你在下面的评论中说,你上面发布的代码不是你正在运行的实际代码(“我没有在上面的代码中包括的是,这两个组件实际上扩展了另一个…”。请发布复制此内容的确切代码。您是否检查过这是否只是一个显示问题?方法是尝试从test1对象运行test2的方法。这是什么版本的CF?您是否可以更新标记(并可能删除所有其他标记,只留下“ColdFusion”和“ColdFusion-x”问题并不是关于一般继承、组件或“扩展”。它只是一个CF使用问题。