Here is a summary from a few previous emails: 1. Define properties(variables) as instance.X to prevent any outside view or editing of them.
2. Use "getX" methods to allow outside viewing, and "setX" methods to set the variable. 3. Define non-property variables used with each method through (cfset var a="tmpVariable"> to prevent accidental overriding of variable used elsewhere. 4. Use <cfproperties> and Hints within <cffunction> and <cfargument> to document your cfc. Andy -----Original Message----- From: Ian Skinner [mailto:[EMAIL PROTECTED] Sent: Tuesday, June 10, 2003 12:25 PM To: CF-Talk Subject: CFC Newbie Discussion. I'm experimenting with my first CFC. I've written these simple example files. *** test.cfc *** <cfcomponent displayname="My First CFC" hint="A trial CFC"> <cfset this.X = 10> <cfset this.Y = 15> <cfset A = 5> <cfset B = 3> <cffunction name="multiplyXY" access="public" returntype="numeric"> <cfset myResult = this.X * this.Y> <cfreturn myResult> </cffunction> <cffunction name="multiplyAB" access="public" returntype="numeric"> <cfset myResult = A * B> <cfreturn myResult> </cffunction> </cfcomponent> *** end *** *** test.cfm *** <cfobject name="testObj" component="test"> <cfdump var="#testObj#"> <cfset this.X = 12> <cfset this.Y = 24> <cfset A = 21> <cfset B = 32> <cfinvoke component="#testObj#" method="multiplyXY" returnvariable="joe"/> <cfinvoke component="#testObj#" method="multiplyAB" returnvariable="sam"/> <cfinvoke component="test" method="multiplyXY" returnvariable="joe2"/> <cfinvoke component="test" method="multiplyAB" returnvariable="sam2"/> <cfoutput> #testObj.X# * #testObj.Y# = #joe#<br> #testObj.X# * #testObj.Y# = #testObj.multiplyXY()#<br> #this.X# * #this.Y# = #this.X * this.Y#<br> <br> #sam#<br> #testObj.multiplyAB()#<br> #A * B#<br> <br> #joe2#<br> #sam2#<br> </cfoutput> *** end *** What I would like to discuss is the performance differences between the various component methods I've tested here. In the CFC code, the X and Y variables are in the "this" scope and the A and B variables are in the default "variable" scope. What are the differences between these practices other then the X and Y are available as properties of an object (obj.X and obj.Y). Then in the CFM code I accessed the component a couple different ways. I first used a <cfobject> tag to "instantiate" an instance of the component as a object variable "testObj". I then accessed the methods of that instance with a <cfinvoke> on testObj and directly [testObj.method()]. Finally I just accessed the methods of the component directly with <cfinvoke>. I would like to discuss the pros and cons of these different practices and when one might be better then another. Also, I remember reading about some kind of scope bug involving CFC's, but since I wasn't really familiar with CFC's at the time, I really didn't understand what I was reading. What would this be about? Thank You -------------- Ian Skinner Web Programmer BloodSource Sacramento, CA ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| Archives: http://www.houseoffusion.com/cf_lists/index.cfm?forumid=4 Subscription: http://www.houseoffusion.com/cf_lists/index.cfm?method=subscribe&forumid=4 FAQ: http://www.thenetprofits.co.uk/coldfusion/faq Signup for the Fusion Authority news alert and keep up with the latest news in ColdFusion and related topics. http://www.fusionauthority.com/signup.cfm Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4

