ユーザー定義関数(UDF)は、その名の通りユーザーが作る関数です。
以下は使用例です。
●func.cfm
<cffunction name="calc" returnType="numeric"> <cfargument name="x" type="numeric" default="0"> <cfargument name="y" type="numeric" default="0"> <cfreturn arguments.x * 2 + arguments.y * 3> </cffunction>
●test1.cfm
<cfinclude template="func.cfm"> <cfset total = 0> <cfloop index="i" from="1" to="5"> <cfset total = total + calc(i, i+1)> </cfloop> <cfoutput> total=#total# </cfoutput>
上記の例では、関数部分をfunc.cfmに書いています。
test.cfm内で、cfincludeタグを使い、
func.cfmの内容を展開する形となります。
今回はcalc関数は短いので便利さが、わかりづらいですが、
長い処理を何回も繰り返し使う場合は便利です。
プログラムのメンテナンスもしやすくなります。
また、以下のような関数の使い方もできます。
●test2.cfm
<cfinclude template="func.cfm"> <cfset total = 0> <cfloop index="i" from="1" to="5"> <cfset total = total + calc(y=i,x= i+1)> </cfloop> <cfoutput> total=#total# </cfoutput>
calc関数の引数名を指定して関数を呼び出す方法です。
海外のプログラムなど見ていると、
例えば、xの型をquery,yの型をstring(csvファイルの絶対パス)
ということにして、
xに値がセットされた場合は、そのまま処理、
yに値がセットされた場合は、queryに変換して処理、
という使い方もあるようです。
いずれにしても、関数を作って処理を見やすくすると
メンテナンスもしやすくなりますね。