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:
Launch code in new window » Download code as text file »
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.
Download Code Snippet ZIP File
Comments (5) | Post Comment | Ask Ben | Permalink | Print Page
Testing For NULL Values In A ColdFusion Query Result Set
I Am Strongly Against The Rel=NoFollow Link Attribute
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.
Posted by Jeremy on Feb 20, 2007 at 9:44 AM
That should be "your call will execute." I haven't had my coffee yet this morning. :-)
Posted by Jeremy on Feb 20, 2007 at 9:45 AM
That is cool! I would have assumed that wouldn't have worked. I wonder if ColdFusion loads UDFs in the parsing stage?
Posted by Steve Bryant on Feb 20, 2007 at 10:02 AM
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.
Posted by Ben Nadel on Feb 20, 2007 at 10:09 AM
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.
Posted by Jeremy on Feb 20, 2007 at 10:21 AM