ColdFusion: Invoke cffunction from the same component
-
21-08-2019 - |
Question
This question might be naive as I'm new to ColdFusion programming.
I have a task for which I have written a function, f1
, inside a component. I want to call f1
from another function, f2
defined in the same component.
f2
is being called in a cfm file.
My question - Is this the right way to do it? Can I invoke f1
from f2
?
I can as well merge f1
into f2
, but I would like keep f1
as a separate function.
Solution
Yes, you can call f1 from f2 in ColdFusion if both functions are part of the same component. (They don't have to be in the same component, but if they are, the answer is always yes.)
<cffunction name="f2">
...
<cfset result_of_f1 = f1()>
...
</cffunction>
<cffunction name="f1">
...
</cffunction>
There are lots of good reasons to call one function from another. It's called function composition.
OTHER TIPS
In Coldfusion 10 and Railo 4, you can create composed functions using the Underscore.cfc library:
_ = new Underscore();// instantiate the library
f1 = function (message) {
return "hello " & message;
};
f2 = function (toOutput) {
writeOutput(toOutput);
};
sayHelloTo = _.compose(f2, f1);
sayHelloTo("world!");// output: "hello world!"
(Note: I wrote the Underscore.cfc library)