Yes, that's a good explanation of the encapsulation perspective
and code.

See the message I just posted for even more basic info on trying
to help a cfinvoke function locate a cfc.  Unless I put it in the
same folder as the calling page, I get an error saying it can't be
found no matter how I try to set up a path using the "source" attribute, etc.

???

Rick

> -----Original Message-----
> From: Mike Kear [mailto:[EMAIL PROTECTED]
> Sent: Monday, June 16, 2008 12:50 AM
> To: CF-Talk
> Subject: Re: cfc question...
> 
> Rick, I'm delighted to see you starting to work with the power of
> CFCs.   I also had the same confusion as you did at first.  The
> terminology for some of these OO concepts gets a bit confusing, so
> perhaps i can help you by expressing some of the ideas related without
> using the teminology.
> 
> Perhaps it might help to see your code with notation for the same thing. 
> ......
> 
> <cfset agent_info = agent.get_agent_info( #url.agent_id# ) />
> 
> Here you're naming a query variable "agent_info", and it's being
> populated with records from a function called agent.get_agent_into()
> which has been given the parameter #url.agent_id#.    That's exactly
> equivalent to your code:
> 
> <cfinvoke component='agent'
>           method='get_agent_info'
>           returnvariable='agent_info'
>           agent_id='#url.agent_id#'>
> 
>  (Although you dont need the hash signs around the url variable, so it
> would more properly be expressed: <cfset agent_info =
> agent.get_agent_info( url.agent_id ) />  )
> 
> Compare this to something you've been using for a long time already like:
> 
> <cfset variable1 = dateformat( createdate, "d/mm/yyyy") />
> 
> You dont need to know how dateformat goes about its business of
> transforming your variable in order to use it.  All the work is done
> inside the function dateformat().  It's the same inside your function
> agent.get_agent_info()
> 
> Now the function get_agent_info() has a limited number of things it
> needs to know, and doesnt care about the rest of the world.   All it
> wants to know is the agent_id it has to look up, and the datasource
> name.    It doesnt care about anything else, nor should it either.
> This is the concept of 'encapsulation' which means briefly, that each
> function has a specific thing it does, and it shouldnt know (or need
> to know) anything except what you tell it.
> 
> That's just like the function dateformat() that you've been using
> since you started with ColdFusion so long ago.  It doesnt know what
> you're using the date for, where the date came from or anything else.
> All it knows is you give it a date object and it gives you back a
> string.
> 
> Does that help you?
> 
> Cheers
> Mike Kear
> Windsor, NSW, Australia
> Adobe Certified Advanced ColdFusion Developer
> AFP Webworks
> http://afpwebworks.com
> ColdFusion, PHP, ASP, ASP.NET hosting from AUD$15/month
> 
> 
> On Mon, Jun 16, 2008 at 5:43 AM, Rick Faircloth
> <[EMAIL PROTECTED]> wrote:
> > Let's say I have link on a page back to itself:
> >
> > <a href='page.cfm?agent_id=20'>Get Agent</a>
> >
> > Then I have this in my page.cfm to invoke a cfc
> > called 'agent.cfc':
> >
> > <cfinvoke component='agent'
> >          method='get_agent_info'
> >          returnvariable='agent_info'
> >          agent_id='#url.agent_id#'>
> >
> >
> > My 'agent.cfc' looks like this:
> >
> > <cffunction access='remote' name='get_agent_info' output='0' 
> > returntype='query'>
> >
> >
> >     <cfargument name='agent_id' type='string' required='1'/>
> >
> >
> >     <cfquery name='get_agent' datasource='xxxxx'>
> >
> >          select * from our_agents where agent_id = '#arguments.agent_id#'
> >
> >     </cfquery>
> >
> >     <cfif get_agent.recordcount>
> >          <cfreturn get_agent/>
> >     <cfelse>
> >          <cfreturn 0/>
> >     </cfif>
> >
> > </cffunction>
> >
> > Now, let's say the invocation is successful and I have extracted query data.
> > I know how to access all the query data back on the calling page (it seems
> > counter-intuitive that the <cfreturn> variable, 'get_agent' in my example 
> > above,
> > is referenced or 'renamed as 'agent_info' as the returnvariable in the 
> > <cfinvoke>...
> > why the renaming?).
> >
> > However, in my app I'm converting all the agent data from the query into 
> > session
> > variables to customize my templates.
> >
> > Is there a way to do that in the .cfc or should I handle that back on my 
> > calling .cfm page?
> > If I handle it in the .cfc, which I'd prefer in order to keep all 
> > processing out of the
> > display page code, how would I return the session variables to the calling 
> > page?
> >
> > Thanks for any input!
> >
> > Rick
> >
> >
> >
> 
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Adobe® ColdFusion® 8 software 8 is the most important and dramatic release to 
date
Get the Free Trial
http://ad.doubleclick.net/clk;203748912;27390454;j

Archive: 
http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:307541
Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm
Unsubscribe: 
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4

Reply via email to