更新:似乎railo根本没有这个问题。
更新:我投票结束这个问题,因为我觉得人们更多地关注整体“有人有更好的想法拆分大型组件”这个问题的一部分(我不应该提出)然后是真正的问题将 cfincludes 与 cfcomponent 一起使用。
注意:这只是一个简化的例子,说明我正在尝试做些什么来传达这个想法。
我遇到的问题是我想在 cfcomponent 中使用 cfinclude ,以便我可以将类似的方法分组到单独的文件中以提高可管理性。我遇到的问题是当我尝试扩展另一个也使用 cfinclude 来管理它的方法的组件时,如下所示。请注意,ComponentA 扩展了 ComponentB:
ComponentA
==========
<cfcomponent output="false" extends="componentb">
<cfinclude template="componenta/methods.cfm">
</cfcomponent>
componenta/methods.cfm
======================
<cffunction name="a"><cfreturn "componenta-a"></cffunction>
<cffunction name="b"><cfreturn "componenta-b"></cffunction>
<cffunction name="c"><cfreturn "componenta-c"></cffunction>
<cffunction name="d"><cfreturn super.a()></cffunction>
ComponentB
==========
<cfcomponent output="false">
<cfinclude template="componentb/methods.cfm">
</cfcomponent>
componentb/methods.cfm
======================
<cffunction name="a"><cfreturn "componentb-a"></cffunction>
<cffunction name="b"><cfreturn "componentb-b"></cffunction>
<cffunction name="c"><cfreturn "componentb-c"></cffunction>
问题是,当我尝试初始化 ComponentA 时出现错误:“例程不能被多次声明。例程 a 已在不同的模板中声明了两次。”
这样做的全部原因是因为当您使用 cfinclude 时,它是在运行时而不是编译时评估的。
除了将方法移入组件本身并消除使用 cfinclude 之外,我该如何解决这个问题,或者有人有更好的想法来拆分大型组件?