La meilleure façon de site stocker les données de configuration spécifique va probablement être de créer un nouveau composant nommé quelque chose comme SiteConfig .cfc avec des méthodes telles que getProperty (propertyName) et setProperty (propertyName, value). Vous pouvez ensuite stocker ce CFC dans le champ d'application en procédant comme suit dans la méthode onApplicationStart de Application.cfc comme:
<cfset application.siteConfig = createObject("component", "SiteConfig").init() />
Retour à votre question initiale si sur le stockage d'une UDF dans le champ d'application, ci-dessous est un moyen de faire cette. La base est que dans onApplicationStart vous allez créer une nouvelle structure persistante d'application avec les propriétés de configuration de votre site comme siteName et tout le reste. Ensuite, une fonction est stockée dans un fichier CFM qui n'est inclus que dans onApplicationStart, puis copié dans la portée de l'application. Cela signifie que tous vos fichiers CFM de page standard peuvent utiliser application.getProperty (propertyName). Étant donné que la fonction n'est créée qu'une seule fois et stockée dans la portée de l'application, elle répond aux exigences de votre question initiale concernant "l'affectation ne se produirait qu'au démarrage de l'application".
Espérons que cela aide un peu!
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#" />
Merci Greg. Essentiellement, il s'agit d'une base de code qui va exécuter plusieurs sites Web et changer en fonction de l'URL. Ainsi, un site particulier aura des informations spécifiques à lui-même (nom du site, par exemple). –
Merci pour les infos supplémentaires Tom. J'ai mis à jour la réponse ci-dessus. Pas sûr de la meilleure façon de gérer plusieurs sites à partir d'une base de code unique, mais espérons que cela vous aide le long de votre chemin. – sqrl0
Merci Greg. C'est génial, cela répond à la question et donne une meilleure façon de le faire. –