演習 4: 構造化された再利用可能なコードの記述

ビジネスロジックと表示を分離することは、一般的に適切なコーディング方法です。作成した ColdFusion ページには、ビジネスロジック (データベースクエリー) と表示 (出力コードブロック) の両方が含まれています。この 2 つを分離するには、クエリーを ColdFusion コンポーネント (CFC) に設定します。この結果、ビジネスロジックと表示が分離されます。さらに、アプリケーション内のどこででも、このクエリーを簡単に再利用できるようになります。詳細については、『ColdFusion MX 開発ガイド』のColdFusion コンポーネントの作成と使用を参照してください。

クエリーを CFC に移動するには :

  1. CFC ファイルを作成します。
  2. クエリーを CFC にコピーします。
  3. クエリーを含むメソッドを呼び出します。

CFC ファイルの作成

ColdFusion コンポーネント (CFC) は、ファイル名の後に .cfc 拡張子を付けて保存される特殊なファイルです。CFC には、データと関数を含むことができます。CFC 内では、関数はメソッドとして参照されます。ColdFusion で実行するアクション (データベースのクエリーなど) は、コンポーネントのメソッドに含まれます。1 つの CFC には、多数のメソッドを設定できます。CFC 内の各メソッドは、1 つの変数だけを返すことができます。次に、一般的な CFC のシンタックスを示します。

<cfcomponent>
   <cffunction name="firstMethod">
       <!--- このメソッドの CFML コードがここに入ります。 --->
   </cffunction>
   <cffunction name="secondMethod">
       <!--- このメソッドの CFML コードがここに入ります。 --->
   </cffunction>
</cfcomponent>

CFC ファイルを作成するには :

  1. my_app ディレクトリのサブディレクトリとして、ディレクトリ名の付いたコンポーネントを作成します。
  2. 新規の空白ファイルを開きます。

    メモ: Dreamweaver を使用している場合は、[カテゴリ] リストの [ダイナミックページ] を選択した後、[ダイナミックページ] リストの [ColdFusion コンポーネント] を選択します。

  3. 次のコードを入力するか、Dreamweaver による実行で説明されている手順を実行します。
    <cfcomponent displayName="Get Trips" hint="Get trip information">
    	<cffunction name="basicList" displayName="List all trips" 
    	hint="List trips in same order as in table" access="public"
    	returnType="query" output="false">
    
    		<cfreturn>
    	</cffunction>
    </cfcomponent>
    
  4. ファイルに "gettrips.cfc" という名前を付けて、コンポーネントディレクトリに保存します。

Dreamweaver による実行

Dreamweaver を使用すると、コードを入力しなくても ColdFusion コンポーネントを作成することができます。

Dreamweaver で CFC を作成するには :

  1. [コンポーネント] タブをクリックします。
  2. [+] ボタンをクリックします。
  3. [表示名] テキストボックスに、「Get Trips」と入力します。
  4. [ヒント] テキストボックスに、「Get trip information」と入力します。
  5. [名前] テキストボックスに、「gettrips」と入力します。
  6. [参照] ボタンをクリックして、コンポーネントディレクトリを現在のディレクトリに設定します。
  7. [セクション] リストの [関数] をクリックします。
  8. [+] ボタンをクリックします。
  9. [名前] テキストボックスに、「basicList」と入力します。
  10. [表示名] テキストボックスに、「List all trips」と入力します。
  11. [ヒント] ボックスに、「List trips in same order as in the table」と入力します。
  12. [返されるタイプ] として [query] を選択します。
  13. [OK] をクリックします。
  14. ファイルに "gettrips.cfc" という名前を付けて、コンポーネントディレクトリに保存します。

CFC へのクエリーのコピー

CFC にクエリーをコピーするには、CFML を CFC の cffunction の開始タグと終了タグの間にコピーします。

クエリーを CFC にコピーするには :

  1. "triplisting.cfm" ページで次のコードを強調表示します。
    <cfquery name="TripList" datasource="CompassTravel">
    	SELECT trips.tripName FROM trips
    </cfquery>
    
  2. 強調表示されたコードを切り取って、次のように表示されるよう "gettrips.cfc" ページにコピーします。
    <cfcomponent displayName="Get Trips" hint="Get trip information">
    	<cffunction name="basicList" 
    		displayName="List all trips" hint="List trips in same order as in table"
    		access="public" returnType="query" output="false">
    		<cfquery name="TripList" datasource="CompassTravel">
    			SELECT trips.tripName FROM trips
    		</cfquery>
    		<cfreturn>
    	</cffunction>
    </cfcomponent>
    
  3. 次のテキストを追加してコードを編集し、メソッドがクエリーの結果を "triplisting.cfm" ページに返すようにします。
    <cfreturn TripList>
    
  4. "gettrips.cfc" ファイルを保存します。

クエリーメソッドの呼び出し

ColdFusion コンポーネントのメソッドにコピーされたクエリーを実行するには、メソッドを呼び出す必要があります。メソッドを呼び出すには、cfinvoke タグを使用します。cfinvoke タグ内に、ColdFusion コンポーネント名、呼び出すメソッド、呼び出しページに返すクエリーを指定します。コンポーネント名には、パッケージ "cfdocs.getting_started.my_app.components." が含まれています。このパッケージの名前は、スラッシュの代わりにピリオドが使用されている以外は、パスと同じです。パスと同じように、パッケージにより、コンポーネントの場所が指定されます。

メソッドを呼び出すには :

  1. "triplisting.cfm" ファイルの一番上に移動します。
  2. 次のコードを入力するか、Dreamweaver による実行で説明されている手順を実行します。
    <cfinvoke
     component="cfdocs.getting_started.my_app.components.gettrips"
     method="basicList"
     returnvariable="TripList">
    </cfinvoke>
    
  3. ファイルを保存します。
  4. ブラウザで "triplisting.cfm" ページを表示し、ページに、以前と同様に旅行名が表示されていることを確認します。

Dreamweaver による実行

Dreamweaver を使用すると、コードを記述しなくても CFC のメソッドを呼び出すことができます。

Dreamweaver を使ってメソッドを呼び出すには :

  1. [アプリケーション] パネルの [コンポーネント] タブをクリックします。
  2. cfdocs.getting_started.my_app.components の隣に表示される [+] ボタンをクリックします。
  3. gettrips の隣に表示される [+] ボタンをクリックします。
  4. クエリー basicList() を選択し、"triplisting.cfm" ファイルの一番上にドラッグします。
  5. 次のとおり、returnvariable の値がクエリー名 TripList となるよう変更します。
    returnvariable="TripList"
    
  6. メソッドを呼び出すには :の手順 3 に戻ります。

ColdFusion MX 7 | ColdFusion MX 6.1 | ColdFusion MX* | ColdFusion 5* | フォーラム* | デベロッパーセンター | サポート情報 | バグ報告

バージョン7

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/coldfusion/7_jp/htmldocs/retriev5.htm