Глобальные функции в Lucee/Coldfusion

Я пытаюсь создать глобальные функции в Lucee. Я следовал указаниям здесь и пусть это "вроде" работает. Внутри Application.cfc я поместил следующий код:

public void function onRequest() {
    URL.IsInternalUser = function() { return (SESSION.user.ID ?: 0); };
}

Кажется, что в некоторых случаях это работает нормально, но если нам нужно получить доступ к этой функции в подкаталоге, содержащем Application.cfc, в котором функция не переопределена, он выдаст ошибку, говоря, что функция не существует.

Конечная цель, которую я пытаюсь достичь, состоит в том, чтобы иметь файл cfc, который содержит несколько пользовательских функций, а затем сделать их доступными во всем приложении без переопределения вещей снова и снова.

Есть ли лучший способ добиться того, что мы хотим? Я спрашиваю это, потому что на странице, на которую я ссылался ранее в разделе комментариев, есть цитата:

Я согласен. Не удивлюсь, если увижу его в другом месте в будущем.

Что мне нравится в методе Railo, так это то, что он полностью изолирован. Библиотеки тегов и функций хоста A никогда не пересекаются/не конфликтуют с библиотеками хоста B, если только они не помещены в глобальные папки сервера. То же самое и с виртуальной файловой системой и почти со всем остальным (источники данных и т. д.).

В нем конкретно упоминается, что у Railo есть способ создать UDF, но я нигде не могу найти документацию по этому поводу. Поскольку мы используем Lucee, который является ответвлением Railo, я полагаю, что он должен иметь то же, что и Railo для создания UDF. Надеюсь, что кто-то, кто читает это, может помочь мне и указать мне правильное направление.


person Yamaha32088    schedule 15.06.2016    source источник


Ответы (1)


Railo/Lucee поддерживает пользовательские функции. Вы можете объявить их в /WEB-INF/{railo|lucee}/library/function/ сайта. Сохраните функцию в файле .cfm и назовите файл так же, как функцию. Сервер нуждается в перезагрузке после создания новых функций. Вот сообщение Райло в блоге об этом.

Adobe ColdFusion не поддерживает это, насколько я знаю. Таким образом, вы должны хранить свои функции в области SERVER здесь.

person Alex    schedule 15.06.2016
comment
Не будет ли каталог WEB-INF перезаписываться каждый раз при перезапуске сервера? - person Yamaha32088; 15.06.2016
comment
Нет, WEB-INF создается только один раз при запуске сервиса Railo/Lucee. Затем каталог сохраняется и сохраняет настройки. - person Alex; 15.06.2016
comment
Вам не нужно ничего хранить в области сервера для Adobe Cold Fusion. Вам просто нужно поместить cfc в папку по умолчанию для пользовательских тегов. - person Dan Bracuk; 15.06.2016
comment
@DanBracuk Только что проверил это в CF10, и оно не распознано, не работает ни в cfcomponent/cfc, ни в cfm. - person Alex; 15.06.2016