Good to know. Thanks, Ian. > The way you are using init() it is unnecessary. You can do this in > the components pseudo constructor. > > <cfcomponent> > > <cfset mystruct = structNew()> > <cfset mystruct.initvar = "init varvalue"> > <cfreturn this> > > <cffunction name="func1" access="public" output="no"> > <cfset var s = structNew()> ..... > > > Anything that is placed between the opening <cfcomponent> and the > first <cffunction> will always be run. The main problem with this is > there is no way to pass arguments to the "constructor". If one needs > the constructor then, the init() function is the way to go. > > > > -------------- > Ian Skinner > Web Programmer > BloodSource > www.BloodSource.org > Sacramento, CA > > "C code. C code run. Run code run. Please!" > - Cynthia Dunning > ..... > -----Original Message----- ..... > From: Ben Mueller [mailto:[EMAIL PROTECTED] ..... > Sent: Friday, May 27, 2005 8:27 AM ..... > To: CF-Talk ..... > Subject: cfcomponent/function inheritence issue? ..... > ..... > I've just started learning cfcomponents as of a few days ago, and > have ..... > liked what I've seen so far, but I'm having what I think is an ..... > inheritence issue. ..... > ..... > I have a component with three functions: an init, and then two other ..... > functions. The init function sets a bunch of variables that I'd like > to ..... > have access to throughout the component. The other functions invoke > the ..... > init function if the init variables haven't been set yet. ..... > ..... > In each function, I'd like to return the global vars returned by the > init ..... > function, plus a bunch of stuff unique to each function. The trouble > is ..... > that the variables from the first function call end up as part of the ..... > overall instance data, and are then somehow getting returned in ..... > subsequent function calls. ..... > ..... > I'm sure it's something silly, but here's my sample code: ..... > ..... > ..... > <cfcomponent> ..... > ..... > <cffunction name="init" access="package" output="no"> ..... > <cfset mystruct = structNew()> ..... > <cfset mystruct.initvar = "init varvalue"> ..... > <cfreturn this> ..... > </cffunction> ..... > ..... > <cffunction name="func1" access="public" output="no"> ..... > <cfset var s = structNew()> ..... > <cfif NOT isDefined("mystruct")><cfset this.init()></cfif> ..... > <cfset s = mystruct> ..... > <cfset s.func1var = "value1"> ..... > <cfreturn s> ..... > </cffunction> ..... > ..... > <cffunction name="func2" access="public" output="no"> ..... > <cfset var t = structNew()> ..... > <cfif NOT isDefined("mystruct")><cfset this.init()></cfif> ..... > <cfset t = mystruct> ..... > <cfset t.func2var = "value2"> ..... > <cfreturn t> ..... > </cffunction> ..... > ..... > </cfcomponent> ..... > ..... > .......... > and here's how I'm invoking it: ..... > ..... > <cfobject name="testcom" component="path.to.component"> ..... > ..... > <cfset func1output = testcom.func1()> ..... > <cfset func2output = testcom.func2()> ..... > ..... > <cfdump var=#func1output#> ..... > <cfdump var=#func2output#> ..... > ..... > What I would expect from the first cfdump is a structure containing > the ..... > "initvar" and "func1var"; and from the second cfdump a structure with ..... > "initvar" and "func2var". However, my second cfdump call returns ..... > "initvar", "func1var" and "func2var". ..... > ..... > So, it would seem that the line of code where I declare this in my > first ..... > function: ..... > ..... > <cfset s = mystruct> ..... > ..... > is not only setting s to the value of mystruct, but also the other > way ..... > around. That is a surprise to me. ..... > ..... > Any help is appreciated. ..... > ..... > Thanks in advance, ..... > Ben Mueller ..... > ..... > ..... > ..... > ..... > ..... > .....
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Logware (www.logware.us): a new and convenient web-based time tracking application. Start tracking and documenting hours spent on a project or with a client with Logware today. Try it for free with a 15 day trial account. http://www.houseoffusion.com/banners/view.cfm?bannerid=67 Message: http://www.houseoffusion.com/lists.cfm/link=i:4:207886 Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4 Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4 Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4 Donations & Support: http://www.houseoffusion.com/tiny.cfm/54

