I think you missed Brad's question... Sean did not say why you return "this"... or did I miss it also?
John ----- Original Message ----- From: "Brad Howerter" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Friday, August 15, 2003 10:18 AM Subject: RE: [CFCDev] CFC Persistance > Why would you return 'this' from the init function? 'This' is not a pointer > to the object, so what good does it do the method caller? > > -----Original Message----- > From: Nathan Dintenfass [mailto:[EMAIL PROTECTED] > Sent: Thursday, August 14, 2003 6:40 PM > To: [EMAIL PROTECTED] > Subject: RE: [CFCDev] CFC Persistance > > > Sean's concise answer may be all you need to know, but just in case you > wanted more.... > > In general, CFC caching is very much like all variable-based caching in CF. > At your disposal you have the Application, Session, and Server scopes. > Which one you use will depend on the nature of the component in question. > > So, for instance, take a very simple shopping cart component. I could build > the component to store, as instance data, the contents of a cart. Perhaps > this is as simple as a structure of structures, or perhaps it's a structure > of other components -- but, that's a detail not germane to this discussion. > Your shopping cart might be something like: > > <cfcomponent> > > <cffunction name="init....> > <cfscript> > variables.cartItems = structNew(); > return this; > </cfscript> > </cffunction> > > <cffunction name="addItem"....> > <cfargument name="itemID"...> > <cfargument name="amount" default="1"....> > <cfset variables.cartItems[arguments.itemID] = newCartEntry(itemID,amount)> > </cffunction> > > <cffunction name="newCartEntry"...> > <cfargument name="itemID"...> > <cfargument name="amount"...> > <cfset var thisEntry = structNew()> > <cfscript> > [NOTE -- this might be where you get item info from a DB instead of just the > ID] > thisEntry.item = structNew(); > thisEntry.item.id = arguments.itemID; > thisEntry.amount = arguments.amount; > </cfscript> > </cffunction> > > <cffunction name="getAllItems"...> > <cfreturn varibles.cartItems> > </cffunction> > > ..... > > </cfcomponent> > > Then, you could give each session a cart: > > <cfparam name="session.cart" > default="#createObject("component","shoppingCart").init()#"> > > So, you now have a shoppingCart instance cached in the session scope, and > you can use the methods of that instance to do all things cart related > (obviously, the above example is lacking a lot of functionality your real > cart would have) while storing instance data as part of itself. > > Thus, the component knows nothing about its environment (good encapsulation) > and can be used any way someone sees fit. Meanwhile, your application > decides the best way to use the cart is to give each session its own cart. > The cart is good at storing/manipulating/giving cart stuff and your > application is good at using a cart. All is right with the world ;) > > Hope this answers your question. > > > > > > > > > > > -----Original Message----- > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > > Behalf Of John Farrar > > Sent: Thursday, August 14, 2003 4:12 PM > > To: [EMAIL PROTECTED] > > Subject: [CFCDev] CFC Persistance > > > > > > There has been talk about CFC caching... persistance... ect. Can > > some of the > > GURUs share with us how and why they achieve this? Reading accross the > > threads I have an idea how to do it... but am aware that we might miss > > something in the fray of multiple posts. > > > > Example: Shopping Cart... I want it to persist without having to hit the > > database each time. So, do I create the object each time in > > "request" scope, > > and then pull the variable set from somewhere? How are people > > doing this and > > what is the performance gain, coding advantage... please feel generous and > > bless those who will follow in your footsteps. > > > > John Farrar > > ---------------------------------------------------------- > You are subscribed to cfcdev. To unsubscribe, send an email > to [EMAIL PROTECTED] with the word 'unsubscribe cfcdev' > in the message of the email. > > CFCDev is run by CFCZone (www.cfczone.org) and supported > by Mindtool, Corporation (www.mindtool.com). > > ---------------------------------------------------------- > You are subscribed to cfcdev. To unsubscribe, send an email > to [EMAIL PROTECTED] with the word 'unsubscribe cfcdev' > in the message of the email. > > CFCDev is run by CFCZone (www.cfczone.org) and supported > by Mindtool, Corporation (www.mindtool.com). > > ---------------------------------------------------------- You are subscribed to cfcdev. To unsubscribe, send an email to [EMAIL PROTECTED] with the word 'unsubscribe cfcdev' in the message of the email. CFCDev is run by CFCZone (www.cfczone.org) and supported by Mindtool, Corporation (www.mindtool.com).
