Включение интерфейсных функций в cfc из файлов cfml на lucee или railo

Я пытаюсь добавить интерфейс в cfc, который включает в себя некоторые функции в файле cfml, однако он выдает ошибку с сообщением "компонент [...] не реализует функцию [..] интерфейса" функция, которую он жалоба реализована во включенном файле cfml, я тестировал это как в railo 4, так и в lucee 5 и получил ту же ошибку в обоих, но это работает в coldfusion 11. Кто-нибудь знает, есть ли обходной путь или исправление для этого в lucee или рельсо?

Ниже приведен пример кода, который воспроизводит ошибку.

междунар.cfc

interface {
    public numeric function func() output="false";
}

comp.cfc

component implements="int" {
    include "inc.cfm";
}

inc.cfm

<cfscript>
public numeric function func() output="false"{
    return 2;
}
</cfscript>

index.cfm

<cfscript>
    cfc = createObject("component", "comp");
    writedump(cfc.func());
</cfscript>

person Snipzwolf    schedule 26.06.2017    source источник


Ответы (1)


Один из возможных обходных путей, который я нашел, состоит в том, чтобы заменить исходный cfc, который включает файл cfml, на пустой cfc, который реализует интерфейс, но также расширяет исходный cfc, переименованный во что-то еще, заменив исходный cfc, вы можете сохранить тот же тип, а также добавить интерфейс. Таким образом, обновленные части примера с вопросом будут выглядеть так:

comp-to-extend.cfc

component implements="int" {
    include "inc.cfm";
}

comp.cfc

component extends="comp-to-extend" implements="int" {}
person Snipzwolf    schedule 28.06.2017