This little tool can help you find what variables need to be put into the "var" scope: http://varscoper.riaforge.org/
Thanks, Eric Cobb Certified Macromedia ColdFusion MX 7 Developer http://www.cfgears.com Paul Alkema wrote: > Ok, I'll look into that and see if that fixes the problem. Also don't worry > about the bluntness, heh, I didn't write this code, I just inherited it. :) > > Paul > > -----Original Message----- > From: Adam Haskell [mailto:a.hask...@gmail.com] > Sent: Friday, June 19, 2009 2:55 PM > To: cf-talk > Subject: Re: Application Scope Problem > > > It has nothing to do with Application scope and everything to do with poorly > written code, sorry to be blunt but that's the issue. As was said all > variables you that you want to be local to that method need to be var'ed. > Currently you are not doing this so those variables are bleeding out of the > method's variable scope (which lives and dies with each call to the method) > and getting into the Object's scope (which lives and dies with the > application since the Object is stored on the Application scope). Again this > is not an issue with putting the object on the Application scope it is an > issue with how the variables are defined in the method. > > Adam > > > On Thu, Jun 18, 2009 at 8:49 AM, Paul Alkema > <paulalkemadesi...@gmail.com>wrote: > >> Has anyone else experienced this issue before with the application scope? >> So >> if I ripped this out of the application scope you think it the issue I am >> having would be fixed correct? >> >> Also, please explain what you mean by ensuring that the arguments >> parameters >> aren't "sticky"? >> >> Do you mean referencing the scope in the cfargument tag? >> >> Like... >> <cfargument name="arguments.placeholder" type="string" required="yes"> >> <cfargument name="arguments.language" type="string" required="yes"> >> Instead of... >> <cfargument name="placeholder" type="string" required="yes"> >> <cfargument name="language" type="string" required="yes"> >> >> >> Thanks! >> -----Original Message----- >> From: Jason Fisher [mailto:ja...@wanax.com] >> Sent: Wednesday, June 17, 2009 3:42 PM >> To: cf-talk >> Subject: RE: Application Scope Problem >> >> >> Completely agree with Brad. Also wouldn't hurt to ensure that the >> arguments parameters aren't sticky, by referencing the scope of 'language' >> and 'placeholder' as appropriate. >> >> <cffunction access="public" name="lookup" returntype="string" output="no" >> hint="Returns the text found for the given language and placeholder"> >> <cfargument name="placeholder" type="string" required="yes"> >> <cfargument name="language" type="string" required="yes"> >> >> <cfset var tempText = ""> >> <cfset var getTranslation = "" /> >> <cfset var varName = "" /> >> >> <!--- Attempt to short-circuit the whole translation-in-memory thing, >> and just do a lookup TVR 1/19/2008 ---> >> >> <cfquery name="getTranslation" datasource="mainDNS"> >> SELECT content >> FROM translations >> WHERE lang = <cfqueryparam CFSQLType="STRING" >> value="#arguments.language#"> >> AND placeholder = <cfqueryparam CFSQLType="STRING" >> value="#arguments.placeholder#"> >> </cfquery> >> >> <!--- If nothing found, and not already looking for English, check >> English ---> >> >> <cfif (getTranslation.recordCount EQ 0) AND (arguments.language NEQ >> 'EN') > >> <cfquery name="getTranslation" datasource="mainDNS"> >> SELECT content >> FROM translations >> WHERE lang = 'EN' >> AND placeholder = <cfqueryparam CFSQLType="STRING" >> value="#arguments.placeholder#"> >> </cfquery> >> </cfif> >> >> <cfif getTranslation.recordCount NEQ 0> >> <!--- Replace any variables in the text, marked by <% %>, with >> values passed to the function as var1, var2, etc. ---> >> <cfset tempText = getTranslation.content> >> <cfloop collection="#arguments#" item="varName"> >> <cfif ucase(left(varName, 3)) eq "VAR"> >> <cfset tempText = replaceNoCase(tempText, "<% #varName#%>", >> arguments[varName])> >> </cfif> >> </cfloop> >> </cfif> >> >> <cfreturn temptext> >> </cffunction> >> >> ---------------------------------------- >> From: b...@bradwood.com >> Sent: Wednesday, June 17, 2009 3:38 PM >> To: "cf-talk" <cf-talk@houseoffusion.com> >> Subject: RE: Application Scope Problem >> >> Do you think this could have anything to do with the fact that this >> function >> is being stored in the application scope? >> >> ======= >> >> Yes, it has everything to do with that. You need to var EVERY variable >> used in that function. Otherwise it is shared by everyone calling your >> code at the exact same time >> >> getTranslation and varName need to be varred like so at the top of the >> function. >> >> ~Brad >> >> >> >> >> >> > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Want to reach the ColdFusion community with something they want? Let them know on the House of Fusion mailing lists Archive: http://www.houseoffusion.com/groups/cf-talk/message.cfm/messageid:323727 Subscription: http://www.houseoffusion.com/groups/cf-talk/subscribe.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4