Лучшим способом хранения данных сайта конкретных конфигураций, вероятно, будет создать новый компонент с именем что-то такое, как 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#" />
Спасибо, Грег. По сути, это одна база кода, которая будет запускать несколько веб-сайтов и изменяться в зависимости от URL-адреса. Таким образом, конкретный сайт будет иметь информацию, специфичную для себя (например, имя сайта). –
Спасибо за дополнительную информацию Том. Я обновил ответ выше. Не уверен, что лучший способ управлять несколькими сайтами с единой базы кода, но надеюсь, что это поможет вам по пути. – sqrl0
Спасибо, Грег. Это здорово, он отвечает на вопрос, а также дает лучший способ сделать это. –