User-defined functions (UDFs) let you create application elements in a format in which you pass in arguments and get a return a value. You can define UDFs using CFScript or the cffunction tag. The two techniques have several differences, of which the following are the most important:
- If you use the cffunction tag, your function can include CFML tags.
- If you write your function using CFScript, you cannot include CFML tags.
You can use UDFs in your application pages just as you use standard ColdFusion functions. When you create a function for an algorithm or procedure that you use frequently, you can then use the function wherever you need the procedure, just as you would use a ColdFusion built-in function. For example, the following line calls the function MyFunct and passes it two arguments:
<cfset returnValue=MyFunct(Arg1, Arg2)>
You can group related functions in a ColdFusion component. For more information, see Using ColdFusion components.
As with custom tags, you can easily distribute UDFs to others. For example, the Common Function Library Project at www.cflib.org is an open-source collection of CFML user-defined functions.
- Data manipulation routines, such as a function to reverse an array
- String and date and time routines, such as a function to determine whether a string is a valid IP address
- Mathematical calculation routines, including standard trigonometric and statistical operations or calculating loan amortization
- Routines that call functions externally, for example using COM or CORBA, such as routines to determine the space available on a Windows file system drive
Consider using UDFs in the following circumstances:
- You want to pass in arguments, process the results, and return a value. UDFs can return complex values, including structures that contain multiple simple values.
- You want to provide logical units, such as data manipulation functions.
- Your code must be recursive.
- You distribute your code to others.
If you can create either a UDF or a custom CFML tag for a particular purpose, first consider creating a UDF because running it requires less system overhead than using a custom tag.
For more information on user-defined functions, see Writing and Calling User-Defined Functions.