2009-03-06 10 views
9

Sto costruendo un elenco di buone pratiche CFC da condividere.Raccolta di ColdFusion CFC Procedure consigliate/consigliate?

Ci sono numerosi articoli là fuori, ma ho pensato che sarebbe stato carino prendere trucchi e suggerimenti insieme in un posto che è stato appreso attraverso l'esperienza.

Aggiungerò alcuni link qui per farlo funzionare, ma penso che la cosa migliore sarebbe non articoli lunghi che possono essere cercati.

CFC Best Practices

Macromedia CFC Best Practices

Aggiornamento: Questo è stato fatto in una comunità wiki

+0

1) Assicurarsi sempre i risultati sono riproducibili prima di avvisare la stampa ... – Shog9

+0

Questo sembra una specie di wiki della community, forse? Ad ogni modo, vorrei presentare una petizione per un nome migliore, poiché mi oppongo a usare "meglio" quando una parola più accurata è solitamente "raccomandata" o "alla moda", poiché ciò che è "migliore" è quasi sempre una questione di contesto. –

+0

Peter, fatto e fatto! –

risposta

0

Prima di utilizzare il ColdBox Framework non ho visto nessun post su utilizzando Momentos per catturare le proprietà in quel momento; tuttavia, ora tutti i miei bean hanno un metodo getMomento() e setMomento(). Lo incoraggerei come best practice per chiunque debba trasferire le informazioni da un bean a un altro oggetto DAO.

Nei miei test, ottenere un momento è molto più veloce che passare il bean e ottenere le proprietà. Ecco un esempio:

<cfcomponent name="userBean" output="true" hint="The account bean holds getter/setter information for a user's account."> 

<cfproperty name="idUser"   required="true"  type="string" rules="noZeroLengthString,validEmail"  invalidMessage="failed_data_validation_email"    hint="Key matching the 'accounts' table."> 
<cfproperty name="loginEmail"  required="true"  type="string" rules="noZeroLengthString,validEmail"  invalidMessage="failed_data_validation_email"    hint="E-mail address."> 
<cfproperty name="password"   required="true"  type="string" rules="noZeroLengthString,validPassword" invalidMessage="failed_data_validation_password"   hint="Password stored in a SHA-512 hash."> 

<cffunction name="init" output="false" returntype="userBean" hint="Initalizes the userBean with default values."> 
    <cfset variables.instance    = structNew()> 
    <cfset variables.instance.IDUser  = 0> 
    <cfset variables.instance.loginEmail = ""> 
    <cfset variables.instance.password  = ""> 
    <cfreturn this> 
</cffunction> 

<!--- SET LOGIN ---> 
<cffunction name="setLoginEmail" access="public" returntype="void" output="false"> 
    <cfargument name="email" type="string" required="true" /> 
    <cfset variables.instance.loginEmail = trim(arguments.email) /> 
</cffunction> 
<cffunction name="getLoginEmail" access="public" returntype="string" output="false"> 
    <cfreturn variables.instance.loginEmail /> 
</cffunction> 

<!--- ID ---> 
<cffunction name="setIDUser" access="public" returntype="void" output="false"> 
    <cfargument name="id" type="numeric" required="true" /> 
    <cfset variables.instance.IDUser = arguments.id /> 
</cffunction> 
<cffunction name="getIDUser" access="public" returntype="numeric" output="false"> 
    <cfreturn variables.instance.IDUser /> 
</cffunction> 

<!--- PASSWORD ---> 
<cffunction name="setPassword" access="public" returntype="void" output="false"> 
    <cfargument name="password" type="string" required="true" /> 
    <cfset var pw = arguments.password> 
    <cfif len(pw) EQ 0> 
     <cfset variables.instance.password = ""> 
    <cfelse> 
     <!---><cfset variables.instance.password = hash(arguments.password, "SHA-512") />---> 
     <cfset variables.instance.password = arguments.password> 
    </cfif> 
</cffunction> 
<cffunction name="getPassword" access="public" returntype="string" output="false"> 
    <cfreturn variables.instance.password /> 
</cffunction> 

<!--- MOMENTO ---> 
<cffunction name="setMomento" access="public" returntype="void" output="false"> 
    <cfargument name="momento" type="struct" required="true" /> 
    <cfset variables.instance = arguments.momento> 
</cffunction> 
<cffunction name="getMomento" access="public" returntype="struct" output="false"> 
    <cfreturn variables.instance /> 
</cffunction> 

Cheers,

Aaron Greenlee My Site