I was thinking that by default <cfset> inside of a function is considered a <cfset var>. I am incorrect on this? If not, does that mean that every <cfset> that I do on a single page (outside of a function) should also be var'd?
On Thu, Apr 5, 2012 at 12:47 PM, Alex Skinner <[email protected]> wrote: > No because they need to be varred. > > > On Thursday, 5 April 2012, Benjamin Davis <[email protected]> > wrote: > > Thanks Alan! > > I see what part of the problem here is. When you dumped the variables > on the index page, it is coming through the call of the > scanner.LoadTemplate, which has access to the full cfc. So, to test this. > I created another function in the scanner.cfc which just returned "Hi" and > then I called it from the index.cfm page > with <cfoutput>#testing()#</cfoutput> and I get "Hi" on my page, so the > index.cfm has full access to the scanner.cfc...... > > I guess that I'm going to have to think this through a little bit more > and come up with a better solution. > > The strange thing still though, is that shouldn't each call to the > function reset its local variables? For example, if I do a dump of the > variables scope inside of my LoadTemplate function, each call to the > function has the exact same variables. Shouldn't this be reset with each > call? > > Thanks for the name info. I didn't realize that I had done that as I > was throwing this together. > > > > On Tue, Apr 3, 2012 at 9:29 PM, Alan Holden <[email protected]> wrote: > > > > It would be nice if we could post the salient parts of this code right > in the mailing list, if you don't mind. You might get a broader response > that way. > > > > NOTE: I get the same results from ACF9 as from OpenBD 2.02... G G G > Ghost Vars!! RUN! AAAAyyyyeeeeee!! > > > > I put this line <cfdump var="#variables#"> at the end of your index.cfm > file, and I can see all the things that CF considers "un-scoped". For > example, while you DO scope application.Scanner on startup, this object has > 2 methods within (LoadTemplate & LoadPage) that have popped up in the > "variables" scope at the time the dump is called. > > > > I think the issue might come from using the OnRequest() method as the > "code shell" for the whole page; also perhaps that the methods in > scanner.cfc are not well encapsulated. They read from external scopes and > write directly to the page, as opposed to [returning values back - from > input arguments passed in], like most well-behaved functions. > > > > Here are some quasi-related conversations I found - that might help: > > http://forums.adobe.com/message/2285269 > > > http://stackoverflow.com/questions/8188015/do-variables-inside-application-cfc-functions-need-scoping > > http://forums.adobe.com/thread/604831 > > > http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=appFramework_04.html > > > > Finally, your application is named "Scanner", and you've also created an > object named "Scanner" within it. Despite the referential separation by > tiny dots, some people would cringe and shudder at such a naming practice. > > > > Al > > > > > > On 4/3/2012 8:29 AM, Benjamin Davis wrote: > > > > Hey Alan, > > Thanks for the info. Attached is a zip file with the basic of basics. > In this example, the index.cfm file sets a variable and then when you to > go page2.cfm, the variable is displayed, even though that page never > specifically sets the variable. Let me know what you think. > > Thanks! > > Ben > > > > On Mon, Apr 2, 2012 at 5:54 PM, Alan Holden <[email protected]> wrote: > > > > It certainly seems like something (perhaps that function) is definitely > causing the variables scope to go zombie on you. But you may need to > whittle your code down to a core sample and actually post that - to get the > greatest qty of help. > > > > Alan Holden > > (at work) > > > > > > On 4/2/2012 2:35 PM, Ben wrote: > > > > So, I have an interesting case that needs some external thought. I've > created a "framework" that handles all of my security as well as combining > the page that is requested into a template file. I've made this into a cfc > that is loaded into the Application Scope. In my OnRequest function, I > call another function of my framework that loads any external files, the > requested file, and then the template file where everything gets combined. > This has been working great, but then I realized that if I set a new > variable on one page I can output it on another page even though I haven't > declare it on the second > > -- > Alex Skinner > Managing Director > Pixl8 Interactive > > Tel: +448452600726 > Email: [email protected] > Web: pixl8.co.uk > > -- > online documentation: http://openbd.org/manual/ > google+ hints/tips: https://plus.google.com/115990347459711259462 > http://groups.google.com/group/openbd?hl=en > -- online documentation: http://openbd.org/manual/ google+ hints/tips: https://plus.google.com/115990347459711259462 http://groups.google.com/group/openbd?hl=en
