Где хранить общие функции в ColdFusion

Мы работаем с ColdFusion MX7.

Одна из проблем, с которыми мы сталкиваемся, заключается в том, что у нас много функций, которые мы используем на многих наших страницах. Было бы неплохо, чтобы они жили в "глобальной" области ColdFusion, а не включали их на всех наших страницах.

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

Я знаю, что мы могли бы прикрепить некоторые объекты к областям применения или сервера, но тогда мы должны ссылаться на них как таковые.

Простое добавление их в глобальную область было бы идеально.

РЕДАКТИРОВАТЬ

Благодаря предложениям, вот что я придумал. По сути, для каждого запроса в функции OnRequestStart присвойте переменной с правильно заданным именем в клиентской области ссылку на функцию (this.functionName).

Application.cfc:

<cfcomponent OUTPUT="FALSE">
<cfset This.name = "MyApp">
<CFSET This.clientManagement = true>
<CFSET This.SessionManagement = true>

<CFFUNCTION NAME="Coalesce" OUTPUT="FALSE" access="public">
    <CFARGUMENT NAME="ARG1">
    <CFARGUMENT NAME="ARG2">

    <CFIF ARG1 NEQ "">
        <CFRETURN ARG1>
    <CFELSE>
        <CFRETURN ARG2>
    </CFIF>
</CFFUNCTION>

<cffunction name="onRequestStart">
    <CFSET CLIENT.COALESCE = this.COALESCE>
</cffunction>

</cfcomponent>

Страницы, которые находятся под этим приложением, с радостью отвечают на звонок:

<CFOUTPUT>#COALESCE("ONE","TWO")#</CFOUTPUT>

Работает отлично!

3 ответа

Решение

Там нет такого понятия, как "глобальный охват".

Если вы говорите о области видимости переменных на каждой странице, вы можете попробовать включить UDF в Application.cfm.

Если вы используете Application.cfc, найдите onRequest() в документе CF7.

Один из вариантов, который меня порадовал, - это создать сервисный (или похожий) компонент в Application.cfc. Добавьте все свои функции к этому компоненту и создайте его при создании приложения. Это уменьшит время загрузки, так как функции кэшируются в приложении, а также сделает функции доступными для любого файла в этом приложении. Конечно, тогда вы должны будете вызвать функцию, такую ​​как application.services.myUsefulFunction()

Проверьте этот аналогичный пост. Это отлично сработало для меня...

Как вы организуете свои маленькие многоразовые функции

Другие вопросы по тегам