ОБНОВЛЕНИЕ: Кажется, что railo вообще не имеет этой проблемы.
ОБНОВЛЕНИЕ: Я голосую, чтобы закрыть этовопрос, который, как я чувствую, заставляет людей больше концентрироваться на целом: «есть ли у кого-то лучшая идея разделить большие компоненты», часть этого вопроса (которую я никогда не должен был вставлять), чем реальная проблема использования cfinclude с cfcomponent.
Примечание: это просто упрощенный пример того, что я пытаюсь сделать, чтобы донести идею.
Проблема, с которой я столкнулся, заключается в том, что я хочу использовать cfinclude внутри cfcomponent, чтобы я моггруппируйте похожие методы в отдельные файлы для большей управляемости.Проблема, с которой я сталкиваюсь, заключается в том, что я пытаюсь расширить другой компонент, который также использует 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, как я могу обойти это или у кого-то есть идея лучше разделить большие компоненты?