Re: My Init() in my CFC...am I on the right track?

2005-01-04 Thread Troy Murray
Per Hal Helms himself-

"Yes, Troy. I've begun work on a new book, "Designing OO Applications with
ColdFusion CFCs" that I hope will be helpful."

-t


On Thu, 30 Dec 2004 12:25:21 -0500, Jeff Small <[EMAIL PROTECTED]> wrote:
> > Sean,
> >
> > Someone should contact Hal and see if he has plans to update the book
> > for Blackstone.
> >
> > That book got me started on CFC's and I bet that  a lot of people on
> > this list would purchase the sequel.
> >
> >
> > Rick Mason
> 
> Dude...sign me UP. I'm getting tired of scouring bookmarks...lol. Even with
> Blackstone coming out, there will still be people using 6.1 for a long time,
> and the *principles* behind the book should be sound for 6.1 and
> Blackstone...syntax would change of course, but I would imagine you could
> take the ideas and still apply them to 6.1 from a Blackstone book...at least
> I'd hope.
> 
> 
> 

~|
Discover CFTicket - The leading ColdFusion Help Desk and Trouble 
Ticket application

http://www.houseoffusion.com/banners/view.cfm?bannerid=48

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:189257
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


Re: My Init() in my CFC...am I on the right track?

2004-12-30 Thread Sean Corfield
On Thu, 30 Dec 2004 09:53:20 -0500, Jeff Small <[EMAIL PROTECTED]> wrote:
> Just a quick Question, then I'm off to go program for days...do you or
> anyone else know if Hal's planning on updating that book? Or if someone else
> has a 6.1 MX OOP book in the works?

I have heard that someone is writing a book about CF & OO but until
they provide more details publicly I can't say who...
-- 
Sean A Corfield -- http://www.corfield.org/
Team Fusebox -- http://www.fusebox.org/
Breeze Me! -- http://www.corfield.org/breezeme
Got Gmail? -- I have 6 invites to give away!

"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood

~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:189039
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


Re: My Init() in my CFC...am I on the right track?

2004-12-30 Thread Jeff Small
> Sean,
>
> Someone should contact Hal and see if he has plans to update the book
> for Blackstone.
>
> That book got me started on CFC's and I bet that  a lot of people on
> this list would purchase the sequel.
>
>
> Rick Mason

Dude...sign me UP. I'm getting tired of scouring bookmarks...lol. Even with 
Blackstone coming out, there will still be people using 6.1 for a long time, 
and the *principles* behind the book should be sound for 6.1 and 
Blackstone...syntax would change of course, but I would imagine you could 
take the ideas and still apply them to 6.1 from a Blackstone book...at least 
I'd hope. 



~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:189005
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


Re: My Init() in my CFC...am I on the right track?

2004-12-30 Thread Rick Mason
Sean,

Someone should contact Hal and see if he has plans to update the book
for Blackstone.

That book got me started on CFC's and I bet that  a lot of people on
this list would purchase the sequel.


Rick Mason




On Thu, 30 Dec 2004 09:53:20 -0500, Jeff Small <[EMAIL PROTECTED]> wrote:
> > On Wed, 29 Dec 2004 13:18:43 -0500, Jeff Small <[EMAIL PROTECTED]> wrote:
> >> Good lord this is a lot of...ahem..."stuff" to remember...
> >
> > Yeah, that's why it takes most folks years to become 'fluent' in OO
> > design...
> 
> Cool, something else to "master"...lol...
> 
> > There's some OO basics in the first few sections of the Mach II
> > Development Guide:
> >
> > http://livedocs.macromedia.com/wtg/public/machiidevguide/
> >
> > (not all of the sections are Mach II specific!)
> >
> > And, as Dave Watts says, any primer on OO techniques (which are mostly
> > for Java developers) should tell you most of this.
> >
> > There are currently no really good books on OO in CF... Hal's
> > "Discovering CFCs" has some good background material but the book is
> > out of date and the code examples show CFMX 6.0 stuff that is a long
> > way from best practice on CFMX 6.1.
> 
> Just a quick Question, then I'm off to go program for days...do you or
> anyone else know if Hal's planning on updating that book? Or if someone else
> has a 6.1 MX OOP book in the works?
> 
> I'd imagine a LOT of this is going to change again once Blackstone is
> released (don't even get me started on Application.cfc...I don't even know
> WHAT that thing is...) but it would be really cool if SOMEONE were planning
> a book on OOP principles as applied to ColdFusion and CFCs. This is a wicked
> cool way to write apps in ColdFusion, and I'd love to think I was leveraging
> all I could from it.
> 
> It seems like all my questions are really just thinly disguised best
> practices questions that aren't even really best practices for coding, just
> design...
> 
> 
> 

~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188998
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


Re: My Init() in my CFC...am I on the right track?

2004-12-30 Thread Jeff Small
> On Wed, 29 Dec 2004 13:18:43 -0500, Jeff Small <[EMAIL PROTECTED]> wrote:
>> Good lord this is a lot of...ahem..."stuff" to remember...
>
> Yeah, that's why it takes most folks years to become 'fluent' in OO 
> design...

Cool, something else to "master"...lol...

> There's some OO basics in the first few sections of the Mach II
> Development Guide:
>
> http://livedocs.macromedia.com/wtg/public/machiidevguide/
>
> (not all of the sections are Mach II specific!)
>
> And, as Dave Watts says, any primer on OO techniques (which are mostly
> for Java developers) should tell you most of this.
>
> There are currently no really good books on OO in CF... Hal's
> "Discovering CFCs" has some good background material but the book is
> out of date and the code examples show CFMX 6.0 stuff that is a long
> way from best practice on CFMX 6.1.

Just a quick Question, then I'm off to go program for days...do you or 
anyone else know if Hal's planning on updating that book? Or if someone else 
has a 6.1 MX OOP book in the works?

I'd imagine a LOT of this is going to change again once Blackstone is 
released (don't even get me started on Application.cfc...I don't even know 
WHAT that thing is...) but it would be really cool if SOMEONE were planning 
a book on OOP principles as applied to ColdFusion and CFCs. This is a wicked 
cool way to write apps in ColdFusion, and I'd love to think I was leveraging 
all I could from it.

It seems like all my questions are really just thinly disguised best 
practices questions that aren't even really best practices for coding, just 
design... 



~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188992
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


Re: My Init() in my CFC...am I on the right track?

2004-12-29 Thread Sean Corfield
On Wed, 29 Dec 2004 13:18:43 -0500, Jeff Small <[EMAIL PROTECTED]> wrote:
> Good lord this is a lot of...ahem..."stuff" to remember...

Yeah, that's why it takes most folks years to become 'fluent' in OO design...

> Where's a good reference for ALL of this "conceptual" stuff? Not the syntax,
> or what you can and can't write...but general conceptual "here's what you're
> trying to accomplish by using CFCs and here's why you want to do some of the
> things you want to do" sort of document?

There's some OO basics in the first few sections of the Mach II
Development Guide:

http://livedocs.macromedia.com/wtg/public/machiidevguide/

(not all of the sections are Mach II specific!)

And, as Dave Watts says, any primer on OO techniques (which are mostly
for Java developers) should tell you most of this.

There are currently no really good books on OO in CF... Hal's
"Discovering CFCs" has some good background material but the book is
out of date and the code examples show CFMX 6.0 stuff that is a long
way from best practice on CFMX 6.1.
-- 
Sean A Corfield -- http://www.corfield.org/
Team Fusebox -- http://www.fusebox.org/
Breeze Me! -- http://www.corfield.org/breezeme
Got Gmail? -- I have 6 invites to give away!

"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood

~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188972
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


Re: My Init() in my CFC...am I on the right track?

2004-12-29 Thread Jeff Small
> We already know that the CreateObject call returns an instance of foo, 
> which
> contains a method bar so we can call that. To be able to call the baz 
> method
> within the chain, we can see that bar needs to return the same object
> instance.

I wish you could see me here at my desk with that little lightbulb going off 
over my head... 



~|
Special thanks to the CF Community Suite Silver Sponsor - CFDynamics
http://www.cfdynamics.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188956
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


RE: My Init() in my CFC...am I on the right track?

2004-12-29 Thread Dave Watts
> Good lord this is a lot of...ahem..."stuff" to remember...

Fortunately, you don't really need to memorize it all as if it were a
multiplication table. You just need to think about how objects, methods and
properties work.

For example, if you want to chain methods, you can see how things work
within equivalent code that doesn't chain methods. Let's say you have an
object foo with methods bar and baz. It doesn't matter what those methods
do, just how you'd write the code to call them.





In the above code, we're creating an object instance called "myfoo", then
calling the bar and baz methods, each on a single line. On the second two
lines, we're not doing anything to catch the returned value from each method
call, so presumably it doesn't matter what values are returned by each
method.

On the other hand, let's say we want to be able to chain these methods
together:



We already know that the CreateObject call returns an instance of foo, which
contains a method bar so we can call that. To be able to call the baz method
within the chain, we can see that bar needs to return the same object
instance.

> Where's a good reference for ALL of this "conceptual" stuff? Not the
> syntax, or what you can and can't write...but general conceptual "here's 
> what you're trying to accomplish by using CFCs and here's why you want 
> to do some of the things you want to do" sort of document? I've seen ALL 
> sorts of "here's how to invoke a CFC" and "here's how to write your first
> CFC" but nothing on, "so you want to design a good, robust CFC?"...what's
> a good reference that's syntax independent?

Any primer on object-oriented programming, or any book introducing an
object-oriented programming language such as Java, will do for this sort of
thing. I don't know of anything that's CF-specific other than Hal Helms'
book on components, which is a bit problematic in that it spends quite a bit
of effort showing how to avoid problems that are specific to CFMX 6.0 if I
recall correctly.

Dave Watts, CTO, Fig Leaf Software
http://www.figleaf.com/
phone: 202-797-5496
fax: 202-797-5444


~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188952
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


Re: My Init() in my CFC...am I on the right track?

2004-12-29 Thread Jeff Small
> You can only chain two methods if the first method returns an object
> containing the second method. If you want to chain two methods that belong
> to a single object, the first method needs to return the object containing
> that method ("this"). If you want to chain a third method, the second 
> method
> has to return an object containing the third method, and so on.
>
> So, for your purposes, all your methods need to return "this" if you want 
> to
> chain them.

...

Good lord this is a lot of...ahem..."stuff" to remember...

Where's a good reference for ALL of this "conceptual" stuff? Not the syntax, 
or what you can and can't write...but general conceptual "here's what you're 
trying to accomplish by using CFCs and here's why you want to do some of the 
things you want to do" sort of document? I've seen ALL sorts of "here's how 
to invoke a CFC" and "here's how to write your first CFC" but nothing on, 
"so you want to design a good, robust CFC?"...what's a good reference that's 
syntax independent? 



~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188947
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


RE: My Init() in my CFC...am I on the right track?

2004-12-29 Thread Dave Watts
> So am I to understand correctly...that you can ONLY chain methods that
> return "this"? Or that if your init function returns an object then all
> methods can be chained? I'm reading all of this conversation as the
> former (the first one) meaning that if you WANT to be able to chain a 
> method, that method needs to return "this".

You can only chain two methods if the first method returns an object
containing the second method. If you want to chain two methods that belong
to a single object, the first method needs to return the object containing
that method ("this"). If you want to chain a third method, the second method
has to return an object containing the third method, and so on.

So, for your purposes, all your methods need to return "this" if you want to
chain them.

Dave Watts, CTO, Fig Leaf Software
http://www.figleaf.com/
phone: 202-797-5496
fax: 202-797-5444


~|
Special thanks to the CF Community Suite Silver Sponsor - RUWebby
http://www.ruwebby.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188940
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


Re: My Init() in my CFC...am I on the right track?

2004-12-29 Thread Jochem van Dieten
Jeff Small wrote:
> 
> So am I to understand correctly...that you can ONLY chain methods that 
> return "this"?

Yes.


> I'm reading all of this conversation as the former 
> (the first one) meaning that if you WANT to be able to chain a method, that 
> method needs to return "this". 

Correct.

Jochem

~|
Special thanks to the CF Community Suite Silver Sponsor - RUWebby
http://www.ruwebby.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188938
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


RE: My Init() in my CFC...am I on the right track?

2004-12-29 Thread Ben Rogers
> So am I to understand correctly...that you can ONLY chain methods that
> return "this"? Or that if your init function returns an object then all
> methods can be chained? I'm reading all of this conversation as the former
> (the first one) meaning that if you WANT to be able to chain a method,
> that
> method needs to return "this".

If you want to chain method calls on the same object, all of the methods in
question must return "this":

  person.setFirstName("Sean").setLastName("Corfield")

In this example, you have a person component with methods setFirstName and
setLastName. Each of those methods is returning "this". The long way to
accomplish the above is:

  person.setFirstName("Sean")
  person.setLastName("Corfield")

In the other example posted, multiple CFCs are involved:

  Name = Session.SessionCFC.getUserCFC().getName()

In this example, the getUserCFC() method belongs to the SessionCFC
component. It is returning a UserCFC component, not "this". The getName()
method belongs to the UserCFC component, not the SessionCFC component.

The longer way to accomplish the above would be:

  User = Session.SessionCFC.getUserCFC()
  Name = User.getName()

Ben Rogers
http://www.c4.net
v.508.240.0051
f.508.240.0057

> 
> 
> 
> 

~|
Special thanks to the CF Community Suite Silver Sponsor - CFDynamics
http://www.cfdynamics.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188937
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


RE: My Init() in my CFC...am I on the right track?

2004-12-29 Thread Bosky, Dave
Don't break the chain of love. 

-Original Message-
From: Jeff Small [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, December 29, 2004 11:40 AM
To: CF-Talk
Subject: Re: My Init() in my CFC...am I on the right track?

> Jim Davis wrote:
>>
>> As for returning "this" from a setter... I never thought about it, but I
>> might start (mine all return void now).  I may personally never use it, 
>> but
>> if it doesn't affect performance it leaves to possibility open for others
>> that might want to.
>
> I return "this" from pretty much everything. I don't typically
> use it to chain methods because I find it harder to read, but if
> the next maintainer likes it the code is there for him to use :)
>
> One small additional benefit is where people new to the whole CFC
> thing use code like:
> 
> This actually works if you return "this", even if it is not good
> practice.

So am I to understand correctly...that you can ONLY chain methods that 
return "this"? Or that if your init function returns an object then all 
methods can be chained? I'm reading all of this conversation as the former 
(the first one) meaning that if you WANT to be able to chain a method, that 
method needs to return "this". 





~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188936
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


Re: My Init() in my CFC...am I on the right track?

2004-12-29 Thread Jeff Small
> Jim Davis wrote:
>>
>> As for returning "this" from a setter... I never thought about it, but I
>> might start (mine all return void now).  I may personally never use it, 
>> but
>> if it doesn't affect performance it leaves to possibility open for others
>> that might want to.
>
> I return "this" from pretty much everything. I don't typically
> use it to chain methods because I find it harder to read, but if
> the next maintainer likes it the code is there for him to use :)
>
> One small additional benefit is where people new to the whole CFC
> thing use code like:
> 
> This actually works if you return "this", even if it is not good
> practice.

So am I to understand correctly...that you can ONLY chain methods that 
return "this"? Or that if your init function returns an object then all 
methods can be chained? I'm reading all of this conversation as the former 
(the first one) meaning that if you WANT to be able to chain a method, that 
method needs to return "this". 



~|
Special thanks to the CF Community Suite Silver Sponsor - New Atlanta
http://www.newatlanta.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188935
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


Re: My Init() in my CFC...am I on the right track?

2004-12-29 Thread Jochem van Dieten
Jim Davis wrote:
> 
> As for returning "this" from a setter... I never thought about it, but I
> might start (mine all return void now).  I may personally never use it, but
> if it doesn't affect performance it leaves to possibility open for others
> that might want to.

I return "this" from pretty much everything. I don't typically 
use it to chain methods because I find it harder to read, but if 
the next maintainer likes it the code is there for him to use :)

One small additional benefit is where people new to the whole CFC 
thing use code like:

This actually works if you return "this", even if it is not good 
practice.

Jochem

~|
Special thanks to the CF Community Suite Silver Sponsor - RUWebby
http://www.ruwebby.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188933
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


RE: My Init() in my CFC...am I on the right track?

2004-12-29 Thread Jim Davis
> -Original Message-
> From: Ben Rogers [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, December 29, 2004 10:04 AM
> To: CF-Talk
> Subject: RE: My Init() in my CFC...am I on the right track?
>
> I agree. I was only referring to setter methods (though I may not have
> been
> very clear about that). In the above example, you're using getters. A
> getter's purpose is to return something. Conseqently, the purpose of the
> line above seems very clear to me.
> 
> This is in contrast to an example posted by Sean in another thread:
> 
>   person.setFirstName("Sean").setLastName("Corfield")
> 
> I find it more difficult to read. I would be very surprised if it were any
> faster than two lines of code. So, I was wondering if there were any other
> benefits or tricks that I'm missing.

No, I agree first!  ;^)

I've heard one argument with setters in that it might allow for more
structured sets of complex data to be read more easily.  For example if you
have a form accepting first, middle and last names you could say:

person.setFirstName("Sean").setMiddleName("Elizabeth").setLastName("Corfield
")

(I am, however, guessing on the actual middle name in this case.)

In this case I can see the argument that when you put on "syntax blinders"
you see the name of the person as it should be seen.  However I agree that
the following seems much more readable:

person.setFirstName("Sean")
person.setMiddleName("Elizabeth")
person.setLastName("Corfield")

The other argument I've read is when you use a setter for an object, then
immediately grab something from that object.  Something like:

profile.setPerson(Sean).getFirstName()

I see this as a little more useful than the first argument (which to me is
really simplistic and should be multiple lines).  At the same time cases
like this seem pretty rare to me.

I've also heard (what I consider completely asinine) arguments that "smaller
code is better" or "runs faster" or whatever.  This of course is complete
bullshit (it was bullshit even in the old CF days when the language was
tokenized and is even moreso now in the compiled Java world).

Still - returning "this" in a setter doesn't force you use this, it just
provides the potential.

Jim Davis





~|
Special thanks to the CF Community Suite Silver Sponsor - CFDynamics
http://www.cfdynamics.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188931
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


RE: My Init() in my CFC...am I on the right track?

2004-12-29 Thread Ben Rogers
> Personally I really hate the notion of chaining setter calls (but I can
> see
> way others may like it).  I do find that much harder to read.
> 
> But other chaining is great.
> 
> Being able to chain the create and the init() together  seems perfectly
> sound to me.  As does any call which returns a CFC as a property then
> calls
> a property of that return as in something like this:
> 
> 

I agree. I was only referring to setter methods (though I may not have been
very clear about that). In the above example, you're using getters. A
getter's purpose is to return something. Conseqently, the purpose of the
line above seems very clear to me.

This is in contrast to an example posted by Sean in another thread:

  person.setFirstName("Sean").setLastName("Corfield")

I find it more difficult to read. I would be very surprised if it were any
faster than two lines of code. So, I was wondering if there were any other
benefits or tricks that I'm missing.

Ben Rogers
http://www.c4.net
v.508.240.0051
f.508.240.0057


~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188925
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Joe Rinehart
> If parameters are not needed, I would feel the init() method 
> is not needed.  But I'm sure that is debatable.

Hey Ian,

Not trying to debate, just giving my point of view:  I'd use the
init() method regardless of the need for parameters.  This way, if
parameters need to be added, the external interface for the CFC
doesn't need to change.

-Joe

-- 
For Tabs, Trees, and more, use the jComponents:
http://clearsoftware.net/client/jComponents.cfm

~|
Special thanks to the CF Community Suite Silver Sponsor - New Atlanta
http://www.newatlanta.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188908
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


RE: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jim Davis
> -Original Message-
> From: Ben Rogers [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, December 28, 2004 4:35 PM
> To: CF-Talk
> Subject: RE: My Init() in my CFC...am I on the right track?
> 
> > This allows you to chain method calls, as others have noted, and will
> > probably help get you more into the habit of using  and method
> > calls (rather than  which I also advise against).
> 
> Just to be clear, are you advising people to chain method calls?
> Personally,
> I'm not crazy about this practice. I find it much more difficult to read
> code that does several different things on one line.

Personally I really hate the notion of chaining setter calls (but I can see
way others may like it).  I do find that much harder to read.

But other chaining is great.

Being able to chain the create and the init() together  seems perfectly
sound to me.  As does any call which returns a CFC as a property then calls
a property of that return as in something like this:



Without chaining I would find that much harder to read and use (especially
when pulling many properties like this).

I think it's personal preference.

As for returning "this" from a setter... I never thought about it, but I
might start (mine all return void now).  I may personally never use it, but
if it doesn't affect performance it leaves to possibility open for others
that might want to.

I like those kind of "there if you want it" kind of compromises.  ;^)

Jim Davis



~|
Special thanks to the CF Community Suite Silver Sponsor - RUWebby
http://www.ruwebby.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188903
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


RE: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Ben Rogers
> This allows you to chain method calls, as others have noted, and will
> probably help get you more into the habit of using  and method
> calls (rather than  which I also advise against).

Just to be clear, are you advising people to chain method calls? Personally,
I'm not crazy about this practice. I find it much more difficult to read
code that does several different things on one line.

Additionally, it just seems unintuitive to have a setter method return a
variable. If a setter returns a variable, I have to decide if it's
meaningful in some way or if the guy before me was just being cute to save
himself from having to type a few extra characters.

Anyway, I'm just wondering if there's something I'm missing here.

Ben Rogers
http://www.c4.net
v.508.240.0051
f.508.240.0057

> 
> Why? I think there's a psychological "hint" behind  and
>  - they look like old-school tags and, hence, old school
> thinking; whereas if you make a conscious effort to switch to 
> and use createObject() / method calls directly, you'll get a "hint"
> that this isn't just old-school tags and it'll help you switch gears
> into new school (OO / CFC) thinking.
> 
> > This part somewhat confuses me, but again, I'm using CFOBJECT and not
> > "CreateObject" so I'm not really setting anything "equal" to anything.
> 
> Which just reinforces my point about psychological hints above...
> --
> Sean A Corfield -- http://www.corfield.org/
> Team Fusebox -- http://www.fusebox.org/
> Breeze Me! -- http://www.corfield.org/breezeme
> Got Gmail? -- I have 6 invites to give away!
> 
> "If you're not annoying somebody, you're not really alive."
> -- Margaret Atwood
> 
> 

~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188902
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Sean Corfield
On Tue, 28 Dec 2004 12:08:54 -0500, Jeff Small <[EMAIL PROTECTED]> wrote:
> Okay, this makes sense. I'm reading about 4 different "sources" for how to
> build CFCs correctly

I hope that includes both of the Macromedia Web Team docs :)

http:/livedocs.macromedia.com/wtg/public/

Note that even tho' the second one is mostly specific to Mach II,
there's a lot of advice about CFC and application design in terms of
OO.

> So in my code where I'm using my CFC, I'm using CFOBJECT like so:
> 

I'd strongly advise switching to  and createObject() - it's
more flexible:



This allows you to chain method calls, as others have noted, and will
probably help get you more into the habit of using  and method
calls (rather than  which I also advise against).

Why? I think there's a psychological "hint" behind  and
 - they look like old-school tags and, hence, old school
thinking; whereas if you make a conscious effort to switch to 
and use createObject() / method calls directly, you'll get a "hint"
that this isn't just old-school tags and it'll help you switch gears
into new school (OO / CFC) thinking.

> This part somewhat confuses me, but again, I'm using CFOBJECT and not
> "CreateObject" so I'm not really setting anything "equal" to anything.

Which just reinforces my point about psychological hints above...
-- 
Sean A Corfield -- http://www.corfield.org/
Team Fusebox -- http://www.fusebox.org/
Breeze Me! -- http://www.corfield.org/breezeme
Got Gmail? -- I have 6 invites to give away!

"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood

~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188900
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jeff Small
> Named:
> 
> or
> 

Aha! This I got immediately. I understand it all now and once we were both 
clear on what I was doing, it makes perfect sense both in what you were 
doing, and syntactically what you were writing. I've seen the lower named 
method in 99.99% of the examples that use that method, I don't honestly 
recall ever seeing the upper method used. But once I see what it is, it 
makes perfect sense.

> Positional:
> 
>
> Any of the above is perfectly valid. I personally prefer named
> arguments because it makes my calling code more explicit in that I
> don't have to go open the CFC to see what the argument name is that
> I'm passing in.

...and this makes a LOT of sense. It's something I'm going to start trying 
to look at closer.

> Further, if you use positional argument notation and
> the order of your arguments gets messed up, then you will be setting
> the wrong values for each argument!

...again, another terrific reason...

> I should note that many prefer
> positional notation because it's just like Java, JavaScript, etc.,
> where you just pass in the value, and it keeps your coding guidelines
> more consistent.

Exactly! For me it was simply force of habit...

> Hopefully this helps a bit more?

TONS more...thanks so much! 



~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188899
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


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Dave Carabetta
Replies inline...

On Tue, 28 Dec 2004 15:00:07 -0500, Jeff Small <[EMAIL PROTECTED]> wrote:
> >> It should be noted that you'll get slight variations from people based
> >> on their preferences, but the code below generally covers best
> >> practices that I've seen. Here's the cleaned up CFC and the calling
> >> code is below it:
> >>
> >> 
> >>  >> returntype="CFCName"
> >> hint="Initializes my object and creates the datasource variable">
> >>
> >>
> >> 

All this does is call an internal private method called setDSN() to
set the datasource name. When I originally read your e-mail, I thought
that you wanted to eventually be able to pass back the name of the
datasource to your calling code (i.e., my_template.cfm needs the name
of the datasource). From your follow-up posts, it looks like all you
really want to do is use the datasource name in that CFC, in which
case the getDSN/setDSN method really aren't necessary. Apologies for
any confusion there.

> >>
> >>  >> returntype="string"
> >> hint="Returns the name of the datasource">
> >>
> >>
> >> 
> >>
> >>  >> returntype="void"
> >> hint="Sets the name of the datasource">
> >>
> >>
> >> 
> >> 

Again, if you don't want your calling code (the CFM template that
invokes the CFC) to access the datasource name, then you really don't
need these two methods -- you can use your initial approach of
directly setting the variables.DSN value in your init() method and
chop the methods out. Any other method within your CFC that needs to
use variables.DSN can then directly refer to it rather than having to
call getDSN() to get its value.

> >>
> >> Calling code:
> >>
> >>  >> "path.to.my.CFC").init()>
> >> 

Your calling code (again, the CFM template that invokes the CFC) now
only needs the first line to actually create an instance of your CFC:



At this point, you have both created a new instance of the CFC and
called its init() method at the same time. You now have a full-fledged
CFC object and you can simply call other methods in that CFC using
this syntax:



> >
> > whoa
> >
> > I think I need to print that out and go thru it slowly. Is your calling
> > code
> > in your page? Why do you use your "getDSN" function after you've already
> > created an object and initialized it? If possible...could you please just
> > sort of briefly explain the three functions? You're using some weird
> > syntax
> > in your init (dsName:"myDataSourceName") that I don't
> > kinda...well..."get"...

I understand there's a lot to take in at the beginning!! As to the
first question, the calling code is the CFM template that actually
creates the CFC instance, and is where the variables.objMyCFC line of
code would go -- *not* in the CFC itself. As I said before, I put in
the getDSN line because I thought your *calling code* needed that
value for some reason. Since it turns out it doesn't, then you can
eliminate that line altogether.

Lastly, the init syntax I used for setDSN() is an alternative way of
calling CFC methods that some people don't use and some do -- I do.
When invoking CFC methods, you have the ability to use named arguments
or use positional arguments. Named arguments, as you might guess, is
when you explicitly note the argument name that the value applies to.
So, taking the setDSN() method from earlier, you'll see the I've
created a cfargument called dsName in the setDSN() method itself that
is expecting a string value. In the init() method, where I called the
setDSN() method, I simply put the name of the argument in front of the
value for clarity. Positional notation, like most other programming
languages, is simply putting the values in the correct order without
specifying the argument name that it goes with. ColdFusion then
implicitly takes the first value and associates it with the first
cfargument in the method being called, the second value with the
second cfargument, and so on. So you can write the setDSN() method
call in three ways (two using named arguments and one using positional
arguments:

Named:

or


Positional:


Any of the above is perfectly valid. I personally prefer named
arguments because it makes my calling code more explicit in that I
don't have to go open the CFC to see what the argument name is that
I'm passing in. Further, if you use positional argument notation and
the order of your arguments gets messed up, then you will be setting
the wrong values for each argument! I should note that many prefer
positional notation because it's just like Java, JavaScript, etc.,
where you just pass in the value, and it keeps your coding guidelines
more consistent.

> 
> Man, I still don't really get this...well, I understand pretty much
> everything that everyone's said in this thread pretty much up to here...the
> above code is sort of confusing. I mean, it's not "syntax" confusing, I can
> follow it. I just don't really "get" what it's accomplishing, and what the
> obvious benefits are for the above code. Don't get me wrong, as soon as the

Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jeff Small
>> It should be noted that you'll get slight variations from people based
>> on their preferences, but the code below generally covers best
>> practices that I've seen. Here's the cleaned up CFC and the calling
>> code is below it:
>>
>> 
>> > returntype="CFCName"
>> hint="Initializes my object and creates the datasource variable">
>>
>>
>> 
>>
>> > returntype="string"
>> hint="Returns the name of the datasource">
>>
>>
>> 
>>
>> > returntype="void"
>> hint="Sets the name of the datasource">
>>
>>
>> 
>> 
>>
>> Calling code:
>>
>> > "path.to.my.CFC").init()>
>> 
>
> whoa
>
> I think I need to print that out and go thru it slowly. Is your calling 
> code
> in your page? Why do you use your "getDSN" function after you've already
> created an object and initialized it? If possible...could you please just
> sort of briefly explain the three functions? You're using some weird 
> syntax
> in your init (dsName:"myDataSourceName") that I don't
> kinda...well..."get"...

Man, I still don't really get this...well, I understand pretty much 
everything that everyone's said in this thread pretty much up to here...the 
above code is sort of confusing. I mean, it's not "syntax" confusing, I can 
follow it. I just don't really "get" what it's accomplishing, and what the 
obvious benefits are for the above code. Don't get me wrong, as soon as the 
lightbulb goes off, I'm all about it, but right now, it's mainly just the 
above code that's making me scratch my headconceptually anyway... 



~|
Special thanks to the CF Community Suite Silver Sponsor - CFDynamics
http://www.cfdynamics.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188896
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


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Dave Carabetta
On Tue, 28 Dec 2004 14:18:14 -0400, Matthew Drayer <[EMAIL PROTECTED]> wrote:
> >   
> 
> This might be a little off the "best CFC practice" topic, but why not create 
> a second CFC to govern all contact with your database(s)?  This way you don't 
> have to worry about each CFC that lives in your "world" understanding 
> database lingo and knowing what the datasource names are -- there's only one 
> spot where it needs to happen.
> 
> We've done this (the component is called database.cfc), and it's really 
> helped to streamline our code.  All queries and other DB-specific 
> interactions are done through this component.  Other CFCs don't need to know 
> anything about it other than invoking the proper method and passing the right 
> arguments.
> 

You absolutely could (and some might say "should" for maintenance
reasons) do that. I just didn't want to muddy the waters with OO
concepts when all he was looking for was feedback on his syntax and
basic usage. While it's good to be cognizant of OO patterns, that's
probably a bit beyond the scope of any beginner's use of CFCs. I'd
suggest getting the syntax and basic usage down, and then refactor
using OO-patterns (via DAOs) later.

Regards,
Dave.

~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188895
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


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jochem van Dieten
Jeff Small wrote:
> From: "Jochem van Dieten"
>> Jeff Small wrote:
>>>
>>> I'm struggling with "this". I don't understand even from Seans's post what
>>> purpose it serves to return "this" when you're using something like CFOBJECT
>>> or "CreateObject()" which creates an instance of an object anyway...
>> 
>> Because that works with cfobject and createobject(), but not with
>> cfinvoke. (read on)
> 
> I read on, and I still kinda don't understand when you say, "that works with 
> cfobject and createobject(), but not with cfinvoke.".
> 
> So you're saying that if I wanted to use CFINVOKE, that I wouldn't be able 
> to unless my init() method was returning "this"?

Yes.

If you use cfinvoke you use 'throwaway' objects. In one call, you 
create the object, initiaize it, use it and discard it again. The 
only way to call multiple methods of an object is to have the 
first one return an instance of the object, and then continue to 
use that instance.


>> If you have your setters return "this" too, you can chain them
>> together:
>> 
>> 
> 
> Okay, "that" makes sense. You're able to do that because both methods 
> (init() and setMode() both return "this"? 

Yes.

Jochem

~|
Special thanks to the CF Community Suite Silver Sponsor - CFDynamics
http://www.cfdynamics.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188893
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Matthew Drayer
>   

This might be a little off the "best CFC practice" topic, but why not create a 
second CFC to govern all contact with your database(s)?  This way you don't 
have to worry about each CFC that lives in your "world" understanding database 
lingo and knowing what the datasource names are -- there's only one spot where 
it needs to happen.

We've done this (the component is called database.cfc), and it's really helped 
to streamline our code.  All queries and other DB-specific interactions are 
done through this component.  Other CFCs don't need to know anything about it 
other than invoking the proper method and passing the right arguments.

Matt

~|
Special thanks to the CF Community Suite Silver Sponsor - CFDynamics
http://www.cfdynamics.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188892
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


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jeff Small
From: "Jochem van Dieten"
> Jeff Small wrote:
>>> 5) One practice that has become a "best practice" of sorts is to
>>> return "this" from your init method so that you can method chain, as
>>> shown below. Granted, not everybody follows this practice, as it's
>>> more personal preference, but it's just what I'm used to now.
>>
>> I'm struggling with "this". I don't understand even from Seans's post 
>> what
>> purpose it serves to return "this" when you're using something like 
>> CFOBJECT
>> or "CreateObject()" which creates an instance of an object anyway...
>
> Because that works with cfobject and createobject(), but not with
> cfinvoke. (read on)

I read on, and I still kinda don't understand when you say, "that works with 
cfobject and createobject(), but not with cfinvoke.".

So you're saying that if I wanted to use CFINVOKE, that I wouldn't be able 
to unless my init() method was returning "this"?

>>> >> returntype="void" hint="Sets the name of the datasource">
>>>
>>>
>>> 
>
> If you have your setters return "this" too, you can chain them
> together:
>
> 
>
> Jochem

Okay, "that" makes sense. You're able to do that because both methods 
(init() and setMode() both return "this"? 



~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188891
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


RE: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jim Davis
> -Original Message-
> From: Jeff Small [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, December 28, 2004 12:18 PM
> To: CF-Talk
> Subject: Re: My Init() in my CFC...am I on the right track?
> 
> 
> I'm struggling with "this". I don't understand even from Seans's post what
> purpose it serves to return "this" when you're using something like
> CFOBJECT
> or "CreateObject()" which creates an instance of an object anyway...

It helps me (but isn't completely correct) to think of the createObject()
call as a "blank CFC".  The init() call populates it to make it useful.

A metaphor might be a bunch of blank paper - all different sizes and shapes.
You first choose one (deciding that piece has the properties you need), then
your write your note on it (deciding what, specifically that appropriate
piece will do).

Assume a "Recipe" CFC.  The CFC instance begins as a blank index card.  Your
init() adds (via arguments, a database call or whatever) three properties:
"Name", "Ingredients" and "Directions".

In pseudo code it might look like:




#MyRecipe.getName()#
#MyRecipe.getIngrediants()#
#MyRecipe.getDirections()#


(The above brought to you by the Coalition to Prevent the Proliferation of
Automobile Metaphors in Technical Discussion.)

Jim Davis



~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:11
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


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jochem van Dieten
Jeff Small wrote:
>> 
>> 5) One practice that has become a "best practice" of sorts is to
>> return "this" from your init method so that you can method chain, as
>> shown below. Granted, not everybody follows this practice, as it's
>> more personal preference, but it's just what I'm used to now.
> 
> I'm struggling with "this". I don't understand even from Seans's post what 
> purpose it serves to return "this" when you're using something like CFOBJECT 
> or "CreateObject()" which creates an instance of an object anyway...

Because that works with cfobject and createobject(), but not with 
cfinvoke. (read on)


>> > hint="Sets the name of the datasource">
>>
>>
>> 

If you have your setters return "this" too, you can chain them 
together:



Jochem

~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:10
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


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jeff Small
> Be wary of calling functions from the pseudo-constructor - if the CFC
> is accessed in any way, including the doc browser, it will execute
> this and call the function. In general I recommend *not* calling
> init() automatically in the CFC but requiring users of the CFC to call
> init() at construction time:

Oh yeah...so this reminds me...

If you place the init() function in your CFC, and its job is to, let's say, 
create a datasource variable to use thruout the CFC (available only to the 
internal CFC methods) and you DON'T chain it when you create an object, 
you're hosed, right? If you go to the trouble of creating an init() function 
like that, is it then basically the idea that it's the coder's 
"responsibility" to make sure that the init() function is chained onto the 
end of any object creation? So if I get hit by a bus, and my replacement 
comes in to code after me, he (or she) would have to make sure they called 
that init() function anytime they were instantiating an object from my 
CFC...no? 



~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188878
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


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jeff Small
>A few comments here:
>
> *Typically i make my init function public so I can call it directly.
> This lets me do this in code:
>
> 
>
> You need to make your method do a  for it to work right.
>
> *Your init function didn't have an argument to it. Therefore, it is
> kinda pointless. You can replace all of that code with just:
>
> 

This makes sense now too, after seeing Sean and Dave's replies...I see what 
they're (and you) are talking about.

> However, your best bet is to make the init function take an argument
> so you can customize the DSN on the fly. You can still use the line
> above (with a real value instead of three dots of course ;) so that
> the CFC has a default DSN at least.

?

> *And yes, if you want a variable to availavble to all methods of a
> CFC, use the Variables scope.

Cool. I did *something* right... 



~|
Special thanks to the CF Community Suite Silver Sponsor - New Atlanta
http://www.newatlanta.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188877
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


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jeff Small
> Not quite.
>
> 1) The access type on an init() function should be public, or you'll
> get an error saying the method doesn't exist when you invoke it in
> your calling code..

Makes *total* sense...

> 2) If you really want to make the value of variables.DSN public (to
> pass back to calling code), make the cfreturn its own getDSN method,
> as shown below.
> 3) Is the  in the CFC itself? If so, it should not be.
> It should be in your calling code.

I think Sean explained this pretty well, I see that now.

> 4) You should be using the "hint" attribute rather than the
> "displayname" attribute for your description.

Okay, I've been using them both actually. I've been trying to make sure I 
use both, and I've been trying to go back thru my code every so often and 
make sure I'm using all the appropriate attributes.

> 5) One practice that has become a "best practice" of sorts is to
> return "this" from your init method so that you can method chain, as
> shown below. Granted, not everybody follows this practice, as it's
> more personal preference, but it's just what I'm used to now.

I'm struggling with "this". I don't understand even from Seans's post what 
purpose it serves to return "this" when you're using something like CFOBJECT 
or "CreateObject()" which creates an instance of an object anyway...

> 6) Another practice that I use, but I know many don't, is to place my
> CFC instance variables into a "instance" structure so that they're
> neatly stored (i.e., variables.instance.DSN instead of just
> variables.DSN).

Hey, now that's pretty cool.

> It should be noted that you'll get slight variations from people based
> on their preferences, but the code below generally covers best
> practices that I've seen. Here's the cleaned up CFC and the calling
> code is below it:
>
> 
>  returntype="CFCName"
> hint="Initializes my object and creates the datasource variable">
>
>
> 
>
>  returntype="string"
> hint="Returns the name of the datasource">
>
>
> 
>
>  returntype="void"
> hint="Sets the name of the datasource">
>
>
> 
> 
>
> Calling code:
>
>  "path.to.my.CFC").init()>
> 

whoa

I think I need to print that out and go thru it slowly. Is your calling code 
in your page? Why do you use your "getDSN" function after you've already 
created an object and initialized it? If possible...could you please just 
sort of briefly explain the three functions? You're using some weird syntax 
in your init (dsName:"myDataSourceName") that I don't 
kinda...well..."get"...

> Here's a link to a community-driven document of best practices for
> further reference:
> http://www.dintenfass.com/cfcbestpractices/
>
> Hope this helps?

Big Time, thanks so much! 



~|
Special thanks to the CF Community Suite Silver Sponsor - RUWebby
http://www.ruwebby.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188875
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


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jeff Small
> Be wary of calling functions from the pseudo-constructor - if the CFC
> is accessed in any way, including the doc browser, it will execute
> this and call the function. In general I recommend *not* calling
> init() automatically in the CFC but requiring users of the CFC to call
> init() at construction time:
>
> 

Okay, this makes sense. I'm reading about 4 different "sources" for how to 
build CFCs correctly (this is the first site where we get to program from 
the ground floor up and not "add on" to an existing website, so I'm excited 
to try and do what I would like to see as a CFC best practice where I'm 
setting things up the most "correct way" possible.

I see what you, Ian, and Raymond were saying about how I don't even really 
need that init function, and I was struggling with that as well, but when I 
consider allowing it to take an optional paramter (DSN) it starts to make 
much more sense.

So in my code where I'm using my CFC, I'm using CFOBJECT like so:


So how would I use that init function using the cfobject tag? Or should I 
just not use that and use "CreateObject()" instead?

>> > returntype="string"
>> displayname="Initializes my object and creates the datasource variable">
>
> Normally, people would expect init() to be public and return an
> instance of the CFC itself:

This part somewhat confuses me, but again, I'm using CFOBJECT and not 
"CreateObject" so I'm not really setting anything "equal" to anything. I'm 
just creating an object on the page, then manipulating it via its methods 
further on down the page...for example, after my CFOBJECT, the very next 
line is:




So I'm thinking that I've instantiated an object with the CFOBJECT call, why 
would my init() function return the object (I mean, it makes total sense, 
I'm just wondering how it works, which is what I think I'm "fuzzy" on).

> Yes, that's a reasonable argument. You could even give init() an
> optional argument to allow users to override the DSN without code
> changes:
>
> 
> 

Okay, this is definitely the first *immediate* change I'm making. 



~|
Special thanks to the CF Community Suite Silver Sponsor - RUWebby
http://www.ruwebby.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188874
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


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Dave Carabetta
On Tue, 28 Dec 2004 11:39:22 -0500, Jeff Small <[EMAIL PROTECTED]> wrote:
> 
> 
>  displayname="Initializes my object and creates the datasource variable">
> 
> 
> 
> 
> I know I could make it so that you have to pass the datasource variable name
> in to the function, but I figured, I can always just change it in one place
> in my CFC, and it's good to go...right?
> 
> That should suit my needs, right? If I want a variable that's available to
> all the functions in my CFC...right? Am I thinking the "right way"?
> 

Not quite.

1) The access type on an init() function should be public, or you'll
get an error saying the method doesn't exist when you invoke it in
your calling code..
2) If you really want to make the value of variables.DSN public (to
pass back to calling code), make the cfreturn its own getDSN method,
as shown below.
3) Is the  in the CFC itself? If so, it should not be.
It should be in your calling code.
4) You should be using the "hint" attribute rather than the
"displayname" attribute for your description.
5) One practice that has become a "best practice" of sorts is to
return "this" from your init method so that you can method chain, as
shown below. Granted, not everybody follows this practice, as it's
more personal preference, but it's just what I'm used to now.
6) Another practice that I use, but I know many don't, is to place my
CFC instance variables into a "instance" structure so that they're
neatly stored (i.e., variables.instance.DSN instead of just
variables.DSN).

It should be noted that you'll get slight variations from people based
on their preferences, but the code below generally covers best
practices that I've seen. Here's the cleaned up CFC and the calling
code is below it:


















Calling code:




Here's a link to a community-driven document of best practices for
further reference:
http://www.dintenfass.com/cfcbestpractices/

Hope this helps?

Regards,
Dave.

~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188873
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


RE: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jim Davis
> -Original Message-
> From: Jeff Small [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, December 28, 2004 11:39 AM
> To: CF-Talk
> Subject: My Init() in my CFC...am I on the right track?
> 
> 
> 
>  returntype="string"
> displayname="Initializes my object and creates the datasource variable">
> 
> 
> 

This should work, but I would definitely accept the name of the datasource
as an argument if it might change.  I don't know what the purpose of this
CFC is, but I can't see any reason that you would want the CFC to be
modified in that case - it should be modified at the point the CFC is
instantiated (I think).

The only other point is that it's common (and I think very good) practice to
return "this" from the init() method.

This returns the instance of your CFC to the caller, which is most often
what you want to do in the case of initialization.  Something like this:
]


The CreateObject() function returns the CFC instance, so you can chain the
init() call it to it.  Since the init() call also returns "this" (the CFC
instance) you can assign it directly to a variable container as is.

I hope I'm making sense, I've just woken up...

Jim Davis




~|
Special thanks to the CF Community Suite Silver Sponsor - RUWebby
http://www.ruwebby.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188869
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Raymond Camden
A few comments here:

*Typically i make my init function public so I can call it directly.
This lets me do this in code:



You need to make your method do a  for it to work right.

*Your init function didn't have an argument to it. Therefore, it is
kinda pointless. You can replace all of that code with just:



However, your best bet is to make the init function take an argument
so you can customize the DSN on the fly. You can still use the line
above (with a real value instead of three dots of course ;) so that
the CFC has a default DSN at least.

*And yes, if you want a variable to availavble to all methods of a
CFC, use the Variables scope.



On Tue, 28 Dec 2004 11:39:22 -0500, Jeff Small <[EMAIL PROTECTED]> wrote:
> 
> 
>  displayname="Initializes my object and creates the datasource variable">
> 
> 
> 
> 
> I know I could make it so that you have to pass the datasource variable name
> in to the function, but I figured, I can always just change it in one place
> in my CFC, and it's good to go...right?
> 
> That should suit my needs, right? If I want a variable that's available to
> all the functions in my CFC...right? Am I thinking the "right way"?
> 
> 

~|
Special thanks to the CF Community Suite Silver Sponsor - New Atlanta
http://www.newatlanta.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188868
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


RE: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Ian Skinner
Well I would say you maybe working a bit too hard.

If that is all you want to do you can just do this.






This sets a variable that can be used by all functions.  Now the limitation of 
this is that you can not pass parameters to this "constructor".  But since you 
stated that you did not want to pass parameters that should not be a problem.  
The reason for the defacto standard of an "init()" method is to be able to pass 
parameters to some kind of constructor like mechanism.  If parameters are not 
needed, I would feel the init() method is not needed.  But I'm sure that is 
debatable.


--
Ian Skinner
Web Programmer
BloodSource
www.BloodSource.org
Sacramento, CA

"C code. C code run. Run code run. Please!"
- Cynthia Dunning









I know I could make it so that you have to pass the datasource variable name 
in to the function, but I figured, I can always just change it in one place 
in my CFC, and it's good to go...right?

That should suit my needs, right? If I want a variable that's available to 
all the functions in my CFC...right? Am I thinking the "right way"?

Confidentiality Notice:  This message including any
attachments is for the sole use of the intended
recipient(s) and may contain confidential and privileged
information. Any unauthorized review, use, disclosure or
distribution is prohibited. If you are not the
intended recipient, please contact the sender and
delete any copies of this message. 



~|
Special thanks to the CF Community Suite Silver Sponsor - CFDynamics
http://www.cfdynamics.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188867
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=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54


Re: My Init() in my CFC...am I on the right track?

2004-12-28 Thread Sean Corfield
On Tue, 28 Dec 2004 11:39:22 -0500, Jeff Small <[EMAIL PROTECTED]> wrote:
> 

Be wary of calling functions from the pseudo-constructor - if the CFC
is accessed in any way, including the doc browser, it will execute
this and call the function. In general I recommend *not* calling
init() automatically in the CFC but requiring users of the CFC to call
init() at construction time:



>  displayname="Initializes my object and creates the datasource variable">

Normally, people would expect init() to be public and return an
instance of the CFC itself:



> 
> 



> 
> 
> I know I could make it so that you have to pass the datasource variable name
> in to the function, but I figured, I can always just change it in one place
> in my CFC, and it's good to go...right?

Yes, that's a reasonable argument. You could even give init() an
optional argument to allow users to override the DSN without code
changes:




> That should suit my needs, right? If I want a variable that's available to
> all the functions in my CFC...right? Am I thinking the "right way"?

With the caveats about expectations for the init() function, yes,
you're on the right track.
-- 
Sean A Corfield -- http://www.corfield.org/
Team Fusebox -- http://www.fusebox.org/
Breeze Me! -- http://www.corfield.org/breezeme
Got Gmail? -- I have 6 invites to give away!

"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood

~|
Special thanks to the CF Community Suite Gold Sponsor - CFHosting.net
http://www.cfhosting.net

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188866
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


My Init() in my CFC...am I on the right track?

2004-12-28 Thread Jeff Small







I know I could make it so that you have to pass the datasource variable name 
in to the function, but I figured, I can always just change it in one place 
in my CFC, and it's good to go...right?

That should suit my needs, right? If I want a variable that's available to 
all the functions in my CFC...right? Am I thinking the "right way"? 



~|
Special thanks to the CF Community Suite Silver Sponsor - New Atlanta
http://www.newatlanta.com

Message: http://www.houseoffusion.com/lists.cfm/link=i:4:188863
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