ColdFusion Method Definitions Can Come After The Code That References Them

Posted February 20, 2007 at 8:48 AM by Ben Nadel

Tags: ColdFusion

Well, not always, but sometimes. I always thing about ColdFusion as a top-down processing system. And, it is. But what I forget is that the page gets compiled before it gets run. Because of that (or at least this is what I am assuming), ColdFusion methods that are declared within a given template can come AFTER the code that references them so long as that reference is also in the same template.

In other words, this runs perfectly well:

  • <!--- Get some reassurance. --->
  • #GetReassurance( "Am I good enough?" )#
  •  
  • <cffunction
  • name="GetReassurance"
  • access="public"
  • returntype="string"
  • output="false"
  • hint="Reassures you that you are good enough.">
  •  
  • <cfreturn "Look dude, you are the man! Don't fight it." />
  • </cffunction>

Logically, I would expect that page to fail as the line that calls GetReassurance() is referring to a user defined method that has not yet been defined. But, since this method gets compiled with the page, I guess same-template references do not require a particular order.

If the ColdFusion user defined method was put into a CFInclude, this would fail. This only works if the method is defined IN THE SAME PAGE.



Reader Comments

Feb 20, 2007 at 9:44 AM // reply »
30 Comments

Right you are. In fact, even if you put a cfabort after your udf call and before your udf definition, I believe your call well execute successfully under most circumstances. Obviously if your udf references global variables defined after the cfabort, that probably wouldn't be the case.


Feb 20, 2007 at 9:45 AM // reply »
30 Comments

That should be "your call will execute." I haven't had my coffee yet this morning. :-)


Feb 20, 2007 at 10:02 AM // reply »
48 Comments

That is cool! I would have assumed that wouldn't have worked. I wonder if ColdFusion loads UDFs in the parsing stage?


Feb 20, 2007 at 10:09 AM // reply »
10,640 Comments

I think UDFs get loaded as actual Java classes right? I guess they get compiled down to separate java byte code before the pages starts running. Of course I know nothing about that aspect, so I may be way off the mark.


Feb 20, 2007 at 10:21 AM // reply »
30 Comments

Ben, I think you're right. I know that is the case with functions in CFCs, so I would think it would be similar for plain ol' CFM files.


Post A Comment

Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.

Please review the following issues:

Author Name:


Author Email:

Author Website:

Comment:

Supported HTML tags for formatting: <strong>bold</strong>   <em>italic</em>   <code>code</code>







  • Help Wanted - Find Your Next ColdFusion Job
InVision App - Prototyping Made Beautiful With Prototyping Tools Ben Nadel's Company - Epicenter Consulting Recent Blog Comments
Feb 10, 2012 at 7:21 PM
jQuery AJAX Strips Script Tags And Inserts Them After Parent-Most Elements
Update! Instead of $(eval(options.insertAfter)).after(data['insertData']); I now use: var ajaxNode = document.createElement('span'); var parent = $(eval(options.insertAfter))[0].parentNode; ... read »
Feb 10, 2012 at 6:18 PM
jQuery AJAX Strips Script Tags And Inserts Them After Parent-Most Elements
encountered this same, what I consider, jQuery bug last week. I'm building a site in which I load some content via AJAX. This content contains Linkedin share button placeholders which Linkedin API ne ... read »
Feb 10, 2012 at 11:30 AM
Cross-Origin Resource Sharing (CORS) AJAX Requests Between jQuery And Node.js
After you understand the concepts here, this is an awesome cheatsheet for enabling CORS in just about anything http://enable-cors.org/ ... read »
JM
Feb 10, 2012 at 9:10 AM
My Safari Browser SQLite Database Hello World Example
@Amy, Here is a very good tutorial on how to use JOIN: http://www.sqltutorial.org/sqljoin-innerjoin.aspx ... read »
Feb 10, 2012 at 4:42 AM
Building A Twitter-Inspired RESTful API Architecture In ColdFusion
This is great, very useful Ben. I spotted a small typo in the api.cgm listing: <cfthrow type="Unauthroized" /> Cheers Stefan ... read »
Feb 9, 2012 at 10:35 PM
CFDirectory Filtering Uses Pipe Character For Multiple Filters (Thanks Steve Withington)
I was wondering if there would be a filter you could apply so that you got everything but what you included in the filter. As in show me all docs that are not a .pdf. ... read »
Feb 9, 2012 at 10:29 PM
Learning ColdFusion 9: Application-Specific Data Sources
@Ben, No offence, but if people were really wanting advanced features they would be using a platform like ASP.NET MVC. CFML is so structurally compromised as a tag-based scripting language that ... read »
Feb 9, 2012 at 10:03 PM
Subversion - Cleanup Failed To Process The Following Paths
@Leviaguirre, do you still have problems with this? ... read »