application variables in a CFC

application variables in a CFC

Post by whatchamakeofi » Wed, 13 May 2009 08:04:49



I have some application variables declared in my Application.cfm file,
and I want to be able to use them in my CFC.  However, I've noticed
that if I try to access an application variable (say, a datasource), I
get an error saying "Variable XXX is undefined."  So, I did some
research and supposedly, it's bad practice to access application
variables in a CFC.  Not only is it a bad practice, but it doesn't
even seem like it's possible in the first place without running into
an error.  What I'm wondering is, if it's such a bad thing to do, then
what's the worst that can happen?  Someone mentioned portability, but
I'm still having trouble making the connection.

I've searched all over, and the "best" reason I could find is that
CFCs shouldn't be accessing anything outside of the CFC, hence
breaking encapsulation.  If that's the case, then can someone provide
a concrete example where if I did access an application variable in a
CFC, then all hell would break loose?  Most best practices have some
good logical reason behind them, which is all good and dandy, but this
particular one seems to fall in the category of "you should follow
this, but there are much worse things that can happen."  Please
advise.  Thanks

 
 
 

application variables in a CFC

Post by Egil » Wed, 13 May 2009 21:32:42


I had the same exact problem when I started to incorporate CFC files
into my applications. Instead of "variables" I started to use
"request" scope variables. "Request" scope variables can be defined in
application.cfm and used in subsequent .cfc modules. For example:

application.cfm
...
<cfset request.db_variable="my_sql_db">
...

OOB.cfc
...
<cfquery name="incaspulated_qry" datasource="#request.db_variable#">
...

 
 
 

application variables in a CFC

Post by whatchamakeofi » Thu, 14 May 2009 02:46:33


I forgot to point out that I'm running CF 6 so creating an
Application.cfc and putting the dsn in OnApplicationStart() is out of
the question.

I found out that rather than using an application variable, people
just pass the variable via an argument to the CFC.  Seems kinda
kludgy, but I guess that might be my only option.

Putting the dsn in the request scope is interesting.  I've never seen
it done that way before.  What's the motivation behind that, out of
curiosity?

 
 
 

application variables in a CFC

Post by simplic » Sun, 17 May 2009 23:09:55



Quote:> I forgot to point out that I'm running CF 6 so creating an
> Application.cfc and putting the dsn in OnApplicationStart() is out of
> the question.

> I found out that rather than using an application variable, people
> just pass the variable via an argument to the CFC. ?Seems kinda
> kludgy, but I guess that might be my only option.

> Putting the dsn in the request scope is interesting. ?I've never seen
> it done that way before. ?What's the motivation behind that, out of
> curiosity?

why don't you pass the application variable to the cfc as an argument
instead of accessing it directly in cfc?  or if it's something like
datasource value create a this variable in the cfc and initialize
value through/in an init function.

http://www.coldfusionjedi.com/index.cfm/2007/6/22/Find-the-bug

See the comment by me (simplico).

Hope this helps!

 
 
 

1. Problem with Application variables using Application.cfc

Hi guys,

 I'm using CFMX7 and with that the Application.cfc.
 I've defined the app variables using <cfset This.varname = "something">
 I would like to output some of that variables to pages like
 <cfset This.BrowserTitle = "Test">
 using
 <cfoutput>#This.BrowserTitle#</cfoutput>.

 Problem is, whatever variables I define in the Application.cfc, whenever I try
to invoke them (whether they are THIS,APPLICATION,SESSION or whatever), I get
an error "ELEMENT X IS NOT DEFINED IN Y".

 No errors are shown while parsing the Application.cfc file.

 Any insights on this?

 Thanks

 Hugo

2. Limiting Flash movie size

3. using Application/URL variables in a CFC

4. Registering Java Classes in ColdFusion 7

5. Setting variables in Application.cfc

6. Corrupted .SWA files

7. Application.CFC - Undefined Variables?

8. Is there a way??!

9. Variables in Application.cfc

10. setting variables in application.cfc

11. Application.cfc Variables scope

12. cfc application variables

13. Call/get variables from a application.cfc