ColdFusion へようこそ

ColdFusion信者歴22年です。社畜SEをしております。

cfinclude と cfmodule

こんにちは、管理人のハルです。

すいません、忙しくて前回の投稿からだいぶ間が空いてしまいました。
CFCが実装されてから、あまり触れなくなったcfmoduleと、似て非なるcfinclude。
今回はこの2つについてお話をしたいと思います。

cfmodule は 入出力を定義して、引数と戻り値を使った処理が可能なユーザ定義関数です。
対して cfinclude は cfincludeで指定したファイルの中身をそのままHTMLとして出力するための機能です。
ではcfmoduleから具体的に見ていきましょう。

<!--- mod.cfm --->
<!--- 初期値 --->
<cfparam name="Attributes.prmDateTime" default="#Now()#">
<cfset Caller.rtnDateTime = DateTimeFormat(Attributes.prmDateTime, "yyyy/mm/dd hh:MM:ss")>

まずは cfmodule で呼び出されるUDF側を作成します。
単純に引数で渡された日付に対してフォーマットを整えて呼出元に返してあげるだけの処理です。

<!--- test.cfm --->
<cfmodule template="mod.cfm" prmDateTime="#Now()#">
<cfoutput>#Variables.rtnDateTime#</cfoutput>

f:id:welcomcf:20210408142342p:plain

呼出側は cfmodule で呼び出すUDFが鬼呪されたファイル及び引数を指定します。
戻り値があれば、戻り値は接頭辞Variablesの変数として格納されるので、cfoutputで中身を見てみます。
今日の日付が、mod.cfm で指定したフォーマットで出力されていますね。
cfmodule はこのように呼出元に処理結果を返してくれる動きです。

代わって cfinclude を見てみましょう。

<!--- inc.cfm --->
<h1>これはインクルードされる文章です。</h1>

CFの処理を書いてもいいのですが、まずはHTMLで試してみます。

<!--- test.cfm --->
<cfinclude template="inc.cfm">

呼出側ではファイルのパスを指定するだけです。
cfincludeを記述した位置に、指定したファイルの内容が出力されます。
呼出先にCFの関数や変数を書けば、CF側で処理されて出力されます。

f:id:welcomcf:20210408142405p:plain

似て非なるcfmoduleとcfincludeですが、CFCが実装されてからはあまり利用しなくなった印象です。
私の勤務先では、cfmodule は単一処理の共通化に過去よく利用しておりました。

上記でご紹介した記述以外にも様々な記述方法があると思います。
ぜひ皆さんもColdFusionでプログラムを楽しんでみてください。

それではまた次の機会に。