Лучшим способом хранения данных конфигурации сайта, вероятно, будет создание нового компонента с именем, например, SiteConfig.cfc , с такими методами, как getProperty (propertyName) и setProperty (propertyName, value) . Затем вы должны сохранить этот CFC в области приложения, выполнив следующее в методе onApplicationStart Application.cfc, например:
<cfset application.siteConfig = createObject("component", "SiteConfig").init() />
Вернемся к исходному вопросу о хранении UDF в области приложения. Ниже приведен способ сделать это. Основой является то, что в onApplicationStart вы создадите новую постоянную структуру приложения со свойствами конфигурации вашего сайта, такими как siteName и т. Д. Затем функция сохраняется в файле CFM, который включается только в onApplicationStart, а затем копируется в область приложения. Это означает, что все ваши CFM-файлы обычных страниц могут использовать application.getProperty (propertyName) .
Поскольку функция создается только один раз и хранится в области приложения, она удовлетворяет требованиям исходного вопроса о «назначение будет происходить только при запуске приложения».
Надеюсь, это немного поможет!
getProperty.function.cfm
<cffunction name="getProperty" output="false">
<cfargument name="propertyName" type="string" required="true" />
<cfreturn application.config[propertyName] />
</cffunction>
Application.cfc
<cffunction name="onApplicationStart" output="false">
<cfset application.config = structNew() />
<cfset application.config.siteName = "My App's Display Name" />
<cfinclude template="getProperty.function.cfm" />
<cfset application.getProperty = variables.getProperty />
</cffunction>
test.cfm
<cfset propertyValue = application.getProperty("siteName") />
<cfdump var="#propertyValue#" />