Not at all ... Regards,
Marcantonio da Silva Diretor de Desenvolvimento de Produtos [EMAIL PROTECTED] Navita - http://www.navita.com.br 55 (11) 3365-2173 - (11) 9656-4634 ----- Original Message ----- From: "Rob Brooks-Bilson" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Friday, October 03, 2003 5:54 PM Subject: Re: [CFCDev] CFINVOKE vs. CFOBJECT -- which way and why? Marcantonio, Very interesting. Do you mind if I post this on the CFCZone.org site? -Rob "Marcantonio Silva" <[EMAIL PROTECTED]>@cfczone.org on 10/03/2003 02:21:40 PM Please respond to [EMAIL PROTECTED] Sent by: [EMAIL PROTECTED] To: <[EMAIL PROTECTED]> cc: Subject: Re: [CFCDev] CFINVOKE vs. CFOBJECT -- which way and why? Hi Jay, and Paul, I made a simple adjustment to my cfc browser file ( _component_cfcToHTML.cfm), so that the auto-generated documentation also shows a "usage" section for invoking and instantiating the component, there is also an "usage" section for each method. Probably a lot of people on the list have done similar thing, but I consider it really helpfull, it saves me a lot of typing. If anyone wants to try it, I just uploaded to: http://200.189.178.228/common/cfutils/_component_cfcToHTML.zip Regards, Marcantonio da Silva Diretor de Desenvolvimento de Produtos [EMAIL PROTECTED] Navita - http://www.navita.com.br 55 (11) 3365-2173 - (11) 9656-4634 ----- Original Message ----- From: Jay Gibb To: [EMAIL PROTECTED] Sent: Friday, October 03, 2003 4:42 PM Subject: RE: [CFCDev] CFINVOKE vs. CFOBJECT -- which way and why? Hey Paul, I've been wrestling with the same question lately and I've concluded that you shouldn't paint your entire application with the same brush. Meaning, it's really a case-by-case decision. Here are some options for you: <!--- option 1 ---> <cfscript> myCustomerControllerInstance = CreateObject("component", "customerController"); customerStruct = myCustomerControllerInstance.getCustomer(checkCustomer.customerID); </cfscript> <!--- option 2 ---> <cfobject component="customerController" name ="myCustomerControllerInstance"/> <cfinvoke method="getCustomer" component="#myCustomerControllerInstance#" customerId="#checkCustomer.customerID#" returnVariable="customerStruct"/> <!--- option 3 ---> <cfinvoke method="getCustomer" component="customerController" customerId="#checkCustomer.customerID#" returnVariable="customerStruct"/> <!--- option 4 ---> <cfinvoke method="getCustomer" component="customerController" returnVariable="customerStruct"> <cfinvokeargument name="customerId" value=" #checkCustomer.customerID#"/> </cfinvoke> Options 1 and 2 are instantiating a copy of the component in your Variables scope. These are useful if you're planning on using more than one method in the component during the request so that you only have to hit the file system once. Options 3 and 4 are hitting the file system to read the component into memory. Sometimes this is appropriate, and other times it isn't. It depends on a lot of factors. I would only use option 4 if you're going to optionally pass an argument. Option 3 is almost always possible, and it's quicker to type and easier to read. In my opinion, Option 1 is not really a good idea since CF is not a strictly typed language. Future developers will have to read through your CFCs to fully understand what you're doing if your variable names aren't clear. I would only use this option for methods that have 0 arguments. So, what it boils down to for me, is options 2 and 3. 1 and 4 are good to know about, and they're handy from time to time, but generally they should be avoided unless you've got a really good reason to use them. Just my $0.02.. - j. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Paul Giesenhagen Sent: Friday, October 03, 2003 12:19 PM To: [EMAIL PROTECTED] Subject: [CFCDev] CFINVOKE vs. CFOBJECT -- which way and why? I am curious about the code below ... is there a BETTER way to call this with CFOBJECt and if so, why? Once I build the struct "customer" I am going to stick it into a session named customer. I am using CFINVOKE This way: <!--- CFM Template ---> <cfinvoke component="customerController" method="getCustomer" returnvariable="customer"> <cfinvokeargument name="customerID" value=" #checkCustomer.customerID#"> </cfinvoke> <!--- customerController.cfc ---> <cfcomponent displayname="customer" hint="Controls all access to customer information add, edit, delete."> <cffunction name="getCustomer" output="false" returntype="struct" displayname="Selects Customer" hint="Gets customer information and populates cthe customer structure."> <cfquery datasource="qdc2" name="checkCustomer"> SELECT customerID, firstName, lastName, email, company, address1, address2, city, state, country, zip, dayPhone, evePhone, mailList FROM customer WHERE customerID = <cfqueryparam value="#arguments.customerID#" cfsqltype="CF_SQL_INTEGER"> </cfquery> <cfif checkCustomer.recordcount> <cfset customer = StructNew()> <cfset customer.customerID = checkCustomer.customerID> <cfset customer.firstName = checkCustomer.firstName> <cfset customer.lastName = checkCustomer.lastName> <cfset customer.company = checkCustomer.company> <cfset customer.email = checkCustomer.email> <cfset customer.address1 = checkCustomer.address1> <cfset customer.address2 = checkCustomer.address2> <cfset customer.city = checkCustomer.city> <cfset customer.state = checkCustomer.state> <cfset customer.zip = checkCustomer.zip> <cfset customer.country = checkCustomer.country> <cfset customer.dayPhone = checkCustomer.dayPhone> <cfset customer.evePhone = checkCustomer.evePhone> <cfset customer.mailList = checkCustomer.mailList> <!--- Insert Shipping Information ---> <cfset customer.shipFirstName = ""> <cfset customer.shipLastName = ""> <cfset customer.shipCompany = ""> <cfset customer.shipAddress1 = ""> <cfset customer.shipAddress2 = ""> <cfset customer.shipCity = ""> <cfset customer.shipState = ""> <cfset customer.shipZip = ""> <cfset customer.shipCountry = ""> <cfset customer.shipDayPhone = ""> <cfelse> <!--- Do something else ---> </cfif> <cfreturn customer> </cffunction> </cfcomponent> ---------------------------------------------------------- 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). An archive of the CFCDev list is available at www.mail-archive.com/[EMAIL PROTECTED] ---------------------------------------------------------- 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). An archive of the CFCDev list is available at www.mail-archive.com/[EMAIL PROTECTED]
