ColdFusion コンポーネントの作成

ColdFusion コンポーネントを作成するには、 cfcomponent  および  cffunction タグを使用します。なお、 cffunction  タグ単独では機能を果たしません。一方、 cfcomponent  タグは、CFML で作成して cffunction タグで処理するページのみに適用されます。次の例は、2 つのメソッドを持つコンポーネントの基本構造を示しています。

<cfcomponent>
<cffunction name="firstMethod">
<!--- CFML code for this method goes here. --->
</cffunction>
<cffunction name="secondMethod">
<!--- CFML code for this method goes here. --->
</cffunction>
</cfcomponent>

コンポーネントメソッドの定義

コンポーネントのメソッドを定義するには、 cffunction タグを使用します。次の例では、2 つのメソッド( getall スコープ変数および getsalary )を持つ CFC を定義しています。

<cfcomponent>
<cffunction name="getall" output="false" returntype="query">
<cfset var queryall="">
<cfquery name="queryall" datasource="cfdocexamples">
SELECT * FROM EMPLOYEE
</cfquery>
<cfreturn queryall>
</cffunction>
<cffunction name="getsalary" output="false">
<cfset var getNamesandSalary="">
<cfquery name="getNamesandSalary" datasource="cfdocexamples">
SELECT FirstName, LastName, Salary FROM EMPLOYEE
</cfquery>
<cfreturn getNamesandSalary>
</cffunction>
</cfcomponent>

コンポーネントメソッドは ColdFusion の関数なので、メソッドの機能やコーディングテクニックの大部分は、ユーザー定義関数の場合と同じです。なお、 cffunction  タグを使用して関数を作成する方法について詳しくは、ユーザー定義関数の記述と呼び出しを参照してください。CFC メソッドは、他の ColdFusion 関数と同様に、出力を生成して情報を直接表示することも、メソッドを呼び出したコードまたはクライアントに値を返すこともできます。
次の cffunction  タグ属性は CFC にのみ使用します。

  • displayname および  hint 属性:CFC について説明します。詳しくは、ColdFusion コンポーネントの作成CFC の文書化を参照してください。
  • access 属性:CFC へのアクセスを制御します。詳しくは、CFC の効果的な使用アクセスセキュリティの使用を参照してください。
    cffunction タグの詳しいリファレンス情報については、CFML リファレンスを参照してください。

関連メソッドが設定された CFC の定義

CFC を定義する際に、1 つの CFC に関連メソッドをまとめることは適切なプログラミングスタイルです。例えば、ユーザー関連の処理をおこなうすべてのメソッド(addUser、editUser、storeUserPreferences など)を 1 つの CFC に格納したり、関連する算術関数を 1 つの CFC にグループ化することができます。また、ショッピングカートに必要なすべてのメソッドおよびプロパティを含めることもできます。次の CFC には、2 つのコンポーネントメソッド(getEmp および getDept)を定義する 2 つの cffunction タグが含まれています。コンポーネントメソッドを呼び出すと、ExampleApps データベースに対してクエリが実行されます。cfreturn タグは、メソッドの呼び出し元であるクライアントまたはページにクエリの結果を返します。

<cfcomponent>
<cffunction name="getEmp">
<cfset var empQuery="">
<cfquery name="empQuery" datasource="cfdocexamples" dbtype="ODBC">
SELECT FIRSTNAME, LASTNAME, EMAIL
FROM tblEmployees
</cfquery>
<cfreturn empQuery>
</cffunction>
<cffunction name="getDept">
<cfset var deptQuery="">
<cfquery name="deptQuery" datasource="cfdocexamples" dbtype="ODBC">
SELECT *
FROM tblDepartments
</cfquery>
<cfreturn deptQuery>
</cffunction>
</cfcomponent>

別ファイルへの実行可能コードの配置

実行 可能 コードは、メインのコンポーネント定義ページとは別のファイルに配置できます。メソッド実行コードを別ファイルに配置することで、プロパティ初期化コード、メタ情報、およびメソッド定義シェルを、実行可能メソッドの定義コードと分離できます。これによって、コードをモジュール化し、CFML ページが長く複雑になるのを防ぐことができます。
コンポーネントのメソッドコードを分離するには、コンポーネント定義ページで cfinclude タグを使用して、コンポーネントのメソッドコードが含まれているページを呼び出します。

注意:

メソッドが引数を取る場合や、呼び出し元のページにデータを返す場合、 cfargument タグと cfreturn タグは、インクルードされるページではなく、コンポーネント定義ページに記述する必要があります。

cfinclude タグによるコンポーネントメソッドの作成

  1. 次のコードを持つ "tellTime.cfc" ファイルを作成します。

    <cfcomponent>
    <cffunction name="getUTCTime">
    <cfinclude template="getUTCTime.cfm">
    <cfreturn utcStruct.Hour & ":" & utcStruct.Minute>
    </cffunction>
    </cfcomponent>
  2. 次のコードを持つ ColdFusion ページを作成し、それに "getUTCTime.cfm" という名前を付けて "tellTime.cfc" と同じディレクトリに保存します。

    <cfscript>
    serverTime=now();
    utcTime=GetTimeZoneInfo();
    utcStruct=structNew();
    utcStruct.Hour=DatePart("h", serverTime);
    utcStruct.Minute=DatePart("n", serverTime);
    utcStruct.Hour=utcStruct.Hour + utcTime.utcHourOffSet;
    utcStruct.Minute=utcStruct.Minute + utcTime.utcMinuteOffSet;
    if (utcStruct.Minute LT 10) utcStruct.Minute = "0" & utcStruct.Minute;
    </cfscript>

    この例では、 getUTCTime  メソッドの定義で getUTCTime . cfm ファイルを呼び出しています(そのために cfinclude タグを使用しています)。この getUTCTime .cfm のコードが、現在の時刻を UTC 時間形式で計算し、時と分の値を構造体に挿入します。次に、 tellTime . cfc 内のメソッドがその構造体の情報を使用して、現在の UTC 時間を文字列として呼び出しページに返します。インクルードされるページに cfreturn  ステートメントを含めることはできません。

インスタンスデータの初期化

一部のコンポーネントではインスタンスデータを使用できます。これは、コンポーネントインスタンスが存在する間のみ保持されるデータです。例えば、ショッピングカートコンポーネントでは、ユーザーがショッピングカートに入れた商品の ID や数量を格納するためのインスタンスデータなどを使用します。一般に、インスタンスデータは、そのデータを作成、削除、または変更できる複数のメソッドによって共有されます。
CFC のインスタンスデータは、CFC のインスタンスを作成した場合にのみ参照できます。CFC 内からインスタンスデータを参照するには、 this  接頭辞を使用します (例:  this.firstvariable)。呼び出し元ページからインスタンスデータを参照するには、ドット表記法でコンポーネントのインスタンス名とインスタンスデータ名を指定します(例: objectname .ivarname)。コンポーネントをインスタンス化せずにメソッドを呼び出した場合、通常、そのメソッドを持つコンポーネントにインスタンスデータはありません。
インスタンスデータの初期化は、コンポーネント定義の冒頭で、メソッドを定義する前におこないます。このコードは、コンポーネントがインスタンス化されたとき(例えば、 cfobject タグでコンポーネントインスタンスが作成されたときなどに実行されます。このインスタンスデータの初期化コードは、インスタンスが作成されるときにのみ実行され、主にコンポーネントのプロパティを「コンストラクト」するために使用されることから、コンストラクタコードとも呼ばれます。
コンストラクタコードでは任意の CFML タグまたは関数を使用でき、データベースのクエリやデータの検証および操作など、あらゆる ColdFusion 処理を実行できます。コンポーネントを拡張して別のコンポーネントを作成した場合は、親コンポーネントのコンストラクタコードが、子コンポーネントのコンストラクタコードの前に実行されます。

注意:

ColdFusion では、初期化コードをコンポーネント定義の冒頭に配置する必要はありませんが、冒頭に配置するのがよいプログラミングスタイルです。

次の例は、ショッピングカート CFC のコンストラクタコードを示します。

<cfcomponent>
<!--- Initialize the array for the cart item IDs and quantities. --->
<cfset This.CartData = ArrayNew(2)>
<!--- The following variable has the ID of the "Special Deal" product for
this session. --->
<cfset This.Special_ID = RandRange(1, 999)>

スコープの詳細については、The This scopeおよびThe Variables scopeを参照してください。
CFC のインスタンスを初期化しコンストラクタとして機能する init() という名前のメソッドを定義すると便利です。init() メソッドは定数を初期化して、呼び出しページにコンポーネントのインスタンスを返すことができます。次のコードは、init() メソッドの例を示しています。

<cfcomponent displayname="shoppingCart">
<cffunction name="init" access="public" output="no" returntype="shoppingCart">
<cfargument name="shoppingCartID" type="UUID" required="yes">
<cfset variables.shoppingCartID = arguments.shoppingCartID>
<cfreturn this>
</cffunction>

<!--- Additional methods go here. --->
</cfcomponent>

この例の init() メソッドでは variables スコープを使用して、ショッピングカート ID を CFC の任意の場所で利用できるようにしています。スコープについて 詳しくは 、CFC 変数とスコープを参照してください。

メソッドパラメータの定義と使用

メソッドにデータを渡すには、パラメータを使用します。コンポーネントメソッドパラメータを定義するには、 cfargument タグを cffunction タグの本文で使用します。複数のパラメータを定義するには、複数の cfargument タグで処理するページのみに適用されます。このタグでは、パラメータの名前と、次の項目を指定できます。

  • パラメータが必須かどうか
  • 必要なデータ型
  • デフォルトの引数値
  • CFC イントロスペクション用の表示名およびヒントのメタデータ
注意:

 位置でパラメータを識別するなどの方法を使用すれば、cfargument タグを使用せずに CFC メソッドを作成できますが、ほたんどの CFC メソッドでは cfargument タグを使用します。

例 : convertTemp.cfc

"convertTemp.cfc" ファイルは、次のように構成されています。

<cfcomponent>
<!--- Celsius to Fahrenheit conversion method. --->
<cffunction name="ctof" output="false">
<cfargument name="temp" required="yes" type="numeric">
<cfreturn ((temp*9)/5)+32>
</cffunction>

<!--- Fahrenheit to Celsius conversion method. --->
<cffunction name="ftoc" output="false">
<cfargument name="temp" required="yes" type="numeric">
<cfreturn ((temp-32)*5/9)>
</cffunction>
</cfcomponent>

コードの説明

convertTemp CFC には、温度を変換する 2 つのメソッドが含まれています。このコードおよびその機能について、次の表で説明します。

コード

説明

<cfcomponent>

コンポーネントを定義します。

<cffunction name="ctof" output="false">

ctof メソッドを定義します。このメソッドが出力を表示しないことを示します。

<cfargument name="temp" required="yes" type="numeric">

ctof メソッドの temp パラメータを作成します。このパラメータは必須であり、受け付ける値は数値(numeric)であることを指定しています。

<cfreturn ((temp*9)/5)+32>

メソッドが返す値を定義します。

</cffunction>

メソッドの定義を終了します。

<cffunction name="ftoc" output="false">

ftoc メソッドを定義します。このメソッドが出力を表示しないことを示します。

<cfargument name="temp" required="yes" type="numeric">

ftoc メソッドの temp パラメータを作成します。このパラメータは必須であり、受け付ける値は数値(numeric)であることを指定しています。

<cfreturn ((temp-32)*5/9)>

メソッドが返す値を定義します。

</cffunction>

メソッドの定義を終了します。

</cfcomponent>

コンポーネントの定義を終了します。

例 : tempConversion.cfm

ColdFusion ページ "tempConversion.cfm" は、変換する温度を入力して変換の種類を選択するための HTML フォームです。ユーザーが送信ボタンをクリックすると、ColdFusion によって "processForm.cfm" ページのアクションが実行されます。ファイル "tempConversion.cfm" は、"convertTemp.cfc" と同じディレクトリにあり、次のように構成されています。

<cfform action="processForm.cfm" method="POST">
Enter the temperature:
<input name="temperature" type="text"><br>
<br>
Select the type of conversion:<br>
<select name="conversionType">
<option value="CtoF">Celsius to Farenheit</option>
<option value="FtoC">Farenheit to Celsius</option>
</select><br><br>
<input name="submitform" type="submit" value="Submit">
</cfform>

例 : processForm.cfm

ColdFusion ページ "processForm.cfm" は、"tempConversion.cfm" ページのフォームにユーザーが入力した情報に基づいて、適切なコンポーネントメソッドを呼び出します。このページは、"convertTemp.cfc" と同じディレクトリに配置します。

<cfif #form.conversionType# is "CtoF">
<cfinvoke component="convertTemp" method="ctof" returnvariable="newtemp"
temp=#form.temperature#>
<cfoutput>#form.temperature# degrees Celsius is #newtemp# degrees
Farenheit.</cfoutput>
<cfelseif #form.conversionType# is "FtoC">
<cfinvoke component="convertTemp" method="ftoc"
returnvariable="newtemp" temp=#form.temperature#>
<cfoutput>#form.temperature# degrees Fahrenheit is #newtemp# degrees
Celsius.</cfoutput>
</cfif>

コードの説明

ファイル "processForm.cfm" は、適切なコンポーネントメソッドを呼び出します。このコードおよびその機能について、次の表で説明します。

コード

説明

<cfif form.conversionType is "CtoF">

tempConversion.cfm ページのフォームで摂氏から華氏への変換をユーザーが選択した場合に、この cfif ブロック内のコードを実行します。

<cfinvoke component="convertTemp" method="ctof" returnvariable="newtemp" arguments.temp="#form.temperature#">

convertTemp コンポーネントのインスタンスを作成することなく、convertTemp コンポーネントの ctof メソッドを呼び出します。メソッドの結果変数として newtemp を指定します。ユーザーがフォームに入力した温度の値を、ctof メソッドの cfargument タグで指定した temp 変数に代入します。ctof メソッドを呼び出すと、この temp 変数は Arguments スコープに割り当てられます。変数とスコープの詳細については、CFC 変数とスコープを参照してください。

<cfoutput>#form.temperature# degrees Celsius is #newtemp#}}b{{degrees Fahrenheit.</cfoutput>

ユーザーがフォームに入力した温度、"degrees Celsius is" というテキスト、ctof メソッドから得られた新しい温度の値、"degrees Fahrenheit." というテキストを表示します。

<cfelseif #form.conversionType# is "FtoC">

tempConversion.cfm ページのフォームで華氏から摂氏への変換をユーザーが選択した場合に、この cfelseif ブロック内のコードを実行します。

<cfinvoke component="converttemp" method="ftoc" returnvariable="newtemp" temp=#form.temperature#>

convertTemp コンポーネントのインスタンスを作成することなく、convertTemp コンポーネントの ftoc メソッドを呼び出します。メソッドの結果変数として newtemp を指定します。ユーザーがフォームに入力した温度の値を、ftoc メソッドの cfargument タグで指定した temp 変数に代入します。ftoc メソッドを呼び出すと、この temp 変数は Arguments スコープに割り当てられます。変数とスコープの詳細については、CFC 変数とスコープを参照してください。

<cfoutput>#form.temperature# degrees Fahrenheit is #newtemp# degrees Celsius.</cfoutput>

ユーザーがフォームに入力した温度、"degrees Fahrenheit is " というテキスト、ftoc メソッドから得られた新しい温度の値、"degrees Celsius." というテキストを表示します。

</cfif>

cfif ブロックを閉じます。

この例を実行するには、 tempConversion . cfm ページをブラウザーで表示します。フォームのテキストボックスに値を入力すると、その値が変数 form.temperature に格納されます。次に、 processForm . cfm ページで処理が実行されます。このページでは値を form.temperature として参照します。いずれかのメソッドを呼び出すと、 cfinvoke タグが form . temperature の値を  temp に代入します。temp は、適切なメソッドの cfargument  タグで指定されている引数です。convertTemp コンポーネント内の 適切なメソッドが  必要な計算を実行し、新しい値を newtemp として返します 。 cfargument  タグの詳しいリファレンス情報については、CFML リファレンスを参照してください。コンポーネントメソッド定義内のパラメータ値にアクセスするには、Arguments スコープに対して構造体や配列の表記法を使用します。次の例では、lastName 引数を Arguments.lastName として参照しています。また、Arguments1 として参照することもできます。# 記号を使用して #lastname# のように引数に直接アクセスすることもできますが、#Arguments.lastname# のようにスコープを明示するのが良いプログラミングスタイルです。また、配列または構造体の表記法を使用して、複数のパラメータをループすることができます。Arguments スコープについて詳しくは、CFC 変数とスコープArguments スコープを参照してください。

コンポーネントメソッド定義でのパラメータの定義

次の内容のコンポーネントを作成し、"corpQuery.cfc" という名前を付けて Web のルートディレクトリの下のディレクトリに保存します。

<cfcomponent>
<cffunction name="getEmp">
<cfargument name="lastName" type="string" required="true"
hint="Employee last name">
<cfset var empQuery="">
<cfquery name="empQuery" datasource="cfdocexamples">
SELECT LASTNAME, FIRSTNAME, EMAIL
FROM tblEmployees
WHERE LASTNAME LIKE '#Arguments.lastName#'
</cfquery>
<!--- Use cfdump for debugging purposes. --->
<cfdump var=#empQuery#>
</cffunction>
<cffunction name="getCat" hint="Get items below specified cost">
<cfargument name="cost" type="numeric" required="true">
<cfset var catQuery="">
<cfquery name="catQuery" datasource="cfdocexamples">
SELECT ItemName, ItemDescription, ItemCost
FROM tblItems
WHERE ItemCost <= #Arguments.cost#
</cfquery>
<!--- Use cfdump for debugging purposes. --->
<cfdump var=#catQuery#>
</cffunction>
</cfcomponent>

この例では、cfargument で次の属性を指定しています。

  • name 属性でパラメータ名を定義しています。
  • lastName 引数の type 属性では、パラメータとしてテキスト文字列が必要であることを指定しています。cost 引数の type 属性では、パラメータとして数値が必要であることを指定しています。これらの属性は、データベースに送信する前にデータを検証します。
  • required 属性では、パラメータが必須であり、指定しなかった場合は例外が発生することを指定しています。
  • パラメータ値には Arguments スコープを使用してアクセスできます。

結果の提供

ColdFusion コンポーネントは、次の方法で情報を提供できます。

  • 出力を生成して呼び出しページに表示する。
  • 変数を返す。
    アプリケーションでは、 この 2 つの方法のいずれか一方、  または両方を使用できます。どの方法を使用するかは、アプリケーションでの必要性やプログラマのコーディングスタイルによって異なります。例えば、ビジネスロジックを実行する CFC メソッドの多くは、結果を変数として返します。出力を直接表示する CFC メソッドの多くは、出力生成用のモジュラーユニットとして設計されて おり 、 ビジネスロジックは実行しません。

出力の表示

メソッド内にテキスト、HTML コード、または CFML タグの生成出力が含まれている場合は、出力を明示的に抑制していない限り、コンポーネントメソッドを呼び出したクライアントに生成出力としてそれらが返されます。クライアントが Web ブラウザである場合は、Web ブラウザにそれらの結果が表示されます。例えば、次の getLocalTime1 コンポーネントメソッドは、そのメソッドを呼び出したページにローカル時刻を直接表示します。

<cfcomponent>
<cffunction name="getLocalTime1">
<cfoutput>#TimeFormat(now())#</cfoutput>
</cffunction>
</cfcomponent>

Flash Remoting を使用して呼び出されるコンポーネントメソッドや、Web サービスとして呼び出されるコンポーネントメソッドでは、この方法で結果を提供することはできません。

結果の変数を返す

コンポーネントメソッドの定義では、 cfreturn タグを使用することで、結果を変数データとしてクライアントに返すことができます。例えば、次の getLocalTime2 コンポーネントメソッドは、メソッドを呼び出した ColdFusion ページや他のクライアントに、変数としてローカル時刻を返します。

<cfcomponent>
<cffunction name="getLocalTime">
<cfreturn TimeFormat(now())>
</cffunction>
</cfcomponent>

結果を受け取った ColdFusion ページや Flash アプリケーションなどのクライアントは、必要に応じてこの変数データを使用できます。

注意:

URL の使用またはフォームの送信によって CFC が呼び出された場合、変数は WDDX パケットとして返されます。Flash Remoting や他の CFC インスタンスによって呼び出された CFC では、This スコープを返す必要はありません。

値を返すときには、文字列、整数、配列、構造体、CFC のインスタンスなど、すべてのデータ型を使用できます。この cfreturn  タグは、CFScript の return ステートメントと同様に、単一の変数を返します。したがって、一度に複数の結果値を返したい場合は、構造体を使用します。メソッドで出力を表示したくない場合は、 cffunction タグで output="false" を指定します。
なお、 cfreturn  タグの使用について詳しくは、CFML リファレンスを参照してください。

CFC に関する説明を含める

ColdFusion では、いくつかの方法を使用して、CFC に関する説明をコンポーネント定義に含めることができます。この説明は、イントロスペクションを使用して CFC に関する情報を表示したときや、GetMetadata または GetComponentMetaData 関数を呼び出してコンポーネントのメタデータを取得したときに使用されます。CFC に説明を含める方法としては、次のものが用意されています。

  • displayname 属性  と hint 属性
  • ユーザー定義メタデータ属性
  • cfproperty タグ
    情報の表示について詳しくは、CFC の効果的な使用イントロスペクションによるコンポーネント情報の取得を参照してください。

displayname および hint 属性

cfcomponent cffunction cfargument cfproperty の各タグには、 属性  属性と hint 属性があります。
この 属性  属性を使用すると、コンポーネント、属性、メソッド、またはプロパティにわかりやすい名前を付けることができます。この属性は、イントロスペクションを使用したときに、コンポーネントまたはメソッド名の横か、パラメータ情報の行に丸括弧で囲まれて表示されます。
コンポーネント、メソッド、または引数に関するより詳しい説明を提供するには、hint 属性を使用します。この属性は、イントロスペクションを表示したときに、コンポーネントやメソッドの記述から独立した行、および引数の記述の末尾に表示されます。

メタデータ属性

cfcomponent、cffunction、cfargument、cfproperty の各タグでは、任意のメタデータ情報を属性として含めることができます。メタデータ属性を作成するには、メタデータ属性の名前と値を指定します。例えば、次の cfcomponent タグでは、Author 属性がメタデータ属性です。この属性は、関数のパラメータとして使用するためではなく、この CFC の作成者を示すために挿入されています。

<cfcomponent name="makeForm" Author="Bean Lapin">

メタデータ属性は、ColdFusion の処理で使用されることはなく、ColdFusion の標準のイントロスペクションでも表示されませんが、GetMetaData または GetComponentMetaData 関数を使用してメタデータを取得することでアクセスおよび表示できます。属性名は、CFC 要素のメタデータ構造体のキーになります。
メタデータ属性は、説明以外の用途にも利用できます。アプリケーションでは、GetMetadata 関数を使用して、コンポーネントインスタンスのメタデータ属性を取得できます。また、GetComponentMetaData 関数を使用すれば、インターフェイスやインスタンス化していないコンポーネントのメタデータを取得できます。これらの方法でメタデータを取得したら、その値に基づいて処理をおこなうことができます。例えば、次のような cfcomponent タグを持つ mathCFC コンポーネントがあるとします。

<cfcomponent displayname="Math Functions" MetaType="Float">

この場合、次のコードを持つ ColdFusion ページでは、MetaTypeInfo 変数に Float が設定されます。

<cfobject component="mathCFC" name="MathFuncs">
<cfset MetaTypeInfo=GetMetadata(MathFuncs).MetaType>
注意:

すべてのメタデータの値は、GetMetadata 関数から返されるメタデータ構造体内の文字列によって置き換えられます。したがって、カスタムメタデータ属性では式を使用しないでください。

cfproperty タグ

cfproperty タグは、次に示すように、WSDL で使用する複合データ型を作成したり、コンポーネントプロパティの説明を提供したりするのに使用します。

  • ColdFusion Web サービスの WSDL で使用する複合データ型を作成します。詳しくは、Web サービスの公開ColdFusion コンポーネントによる Web サービスのデータ型の定義を参照してください。
  • ColdFusion イントロスペクションにコンポーネントプロパティの説明を提供します。cfproperty タグの標準属性の値がイントロスペクション情報として示されます。
注意:

この cfproperty  タグを使用しても、変数の作成や値の代入はおこなわれません。このタグは、情報提供のためにのみ使用されます。プロパティを作成して値を設定するには、 cfset タグまたは CFScript の代入ステートメントを使用します。

ColdFusion コンポーネントの保存とネーミング

次の表に、コンポーネントファイルを保存できる場所と、様々な場所からアクセス可能かどうかを示します。

 

URL

フォーム

Flash Remoting

Web サービス

ColdFusion ページ

現在のディレクトリ

N/A

N/A

N/A

Web ルート

はい

はい

はい

ColdFusion マッピング

不可

いいえ

いいえ

いいえ

カスタムタグのルート

不可

いいえ

いいえ

いいえ

注意:

ColdFusion マッピングおよびカスタムタグのルートは、Web のルート内に存在する場合があります。この場合、ColdFusion マッピングおよびカスタムタグのルートは、URL、フォーム、Flash Remoting、Web サービス呼び出しなどのリモートリクエストからアクセスできます。

同じディレクトリに複数のコンポーネントを保存した場合、それらのコンポーネントはコンポーネントパッケージのメンバーになります。関連する CFC はパッケージにグループ化することができます。アプリケーションでは 特に、  修飾されたコンポート名を使用して、ディレクトリ内のコンポーネントを参照できます。「修飾されたコンポート名」とは、アクセス可能なディレクトリのサブディレクトリ名から、そのコンポーネントが含まれているディレクトリまでの各ディレクトリを、ピリオドで区切ってコンポーネント名の前に付けたものです。例えば、次の例は、price というコンポーネントの修飾名です。

catalog.product.price

この例では、前の表に示すように、ColdFusion がコンポーネントを検索するディレクトリの catalog¥product サブディレクトリに price. cfc  ファイルが存在している必要があります。修飾名を使用してコンポーネントを参照した場合、ColdFusion では、ColdFusion コンポーネントの使用 - 開発ガイドCFC の場所の指定に示されている順序でコンポーネントを検索します。
わかりやすいネーミング規則を使用することは重要です。パッケージ化されたアプリケーションの一部としてコンポーネントをインストールする場合は特に重要です。

連想配列表記法

連想配列表記法は、パラメーターを持つメソッドをオブジェクト上で呼び出す方法です。ColdFusion では、ドット表記を使用した、オブジェクト上の関数の呼び出しを既にサポートしています。

以下のスニペットは、以前のバージョンで既にサポートされているものです。

<cfscript> 
    obj = { 
    testFunc = function(value){ 
        writeOutput("Function Definition inside an Object with parameter " & value); 
    } 
    }; 
    obj.testFunc("Param"); 
</cfscript>

ただし、複合オブジェクトは、配列表記を使用して呼び出すこともできます。そのため、次のスニペットは動作します。

シンタックス

Object[MethodName](Params)

file.cfc

<cfscript> 
    obj = { 
    testFunc = function(value){ 
        writeOutput("Function Definition inside an Object with parameter " & value); 
    } 
    }; 
    funcName = 'testFunc'; 
    obj.testFunc("Param"); 
    writeOutput("<br>"); 
    obj['testFunc']("Param"); 
    writeOutput("<br>"); 
    obj[funcName]("Param"); 
</cfscript> 
アドビのロゴ

アカウントにログイン