Version 2.1.0
はじめに
バリューコマース ウェブサービス トラベルAPIサンプルは、PHP中級者がウェブサービスを利用して独自のWebアプリケーションを作成するための参考となるよう用意しました。
サンプルコードの使い方
-
[code_samples]フォルダ内にあるすべてのフォルダおよびファイルを用意した サーバ内にコピーする
-
[code_samples]>[VCSDBDriver]内にある[VCSDBDriverConfig.php]をメモ帳などのテキストエディターで開く 下記にあなたのトークンを貼り付ける
/ ウェブサービス トラベルAPIを利用するパートナーサイトのトークン(必須) /
define('VCSDBDRIVER_TOKEN','ここにあなたのトークンを貼り付ける'); |
-
上書き保存しサーバ内にも保存する
-
ブラウザを使って気に入ったサンプルファイルに接続する
- 必要な環境:
-
PHP5 (PHP5.2.6で動作確認済み)
-
SimpleXMLElementが有効になっていること
- 注意:
- サンプルコードは、その動作をバリューコマースが保証するものではありません。また、サンプルコードの技術的サポート等は行っていませんので利用者の責任において使用してください。なお、ソースコードの変更は自由ですが、再配布はしないでください。
1. 概要
1.1. 本サンプルのファイル構成
本サンプルは6つのサンプルアプリケーションによって構成されています。
- ./css
- 本サンプルで利用しているCSSファイルを格納
- ./images
- 本サンプルで利用している画像ファイルを格納
- ./VCSDBDriver
- トラベルAPIにアクセスするのに便利なAPIドライバクラスを格納。 (可能な範囲で汎用的に流用できるように設計されています)
- ./Views
- サンプルコードにアクセスした際ブラウザに表示されるページのヘッダ部分(検索項目を入力したりする部分)や、 アイテムリストのHTMLやJavaScriptが含まれるファイルを格納。 (これらのファイルは./ディレクトリにあるPHPモジュールによって一旦読み込まれ、適切な情報を埋め込んでからブラウザに送られます)
- ./templates
- 高度な検索用サンプルコードのトップページ、検索結果ページ、詳細ページそれぞれの本体の生成ファイル
- ./scripts
- 高度な検索で利用しているJavaScriptメニューとロールオーバーボタンのアクションが含まれているファイル
- ./
各サンプルのメインPHPファイルや、ブラウザに表示するHTMLページの加工/生成を行うためのPHPクラスファイルを格納
1.2. 本サンプルのパラメータ
本サンプルは、検索等のパラメータのやり取りにGETを使用しています。
1.2.1. 全サンプル共通のパラメータ
- page 検索結果から表示するページ番号を指定します。
1.2.2. search_filter_results.php advanced_filters_results.php 共通パラメータ
- keyword 検索キーワード
- larea_cd 検索対象となる大エリアコード(1個のみ対応)
- sarea_cd 検索対象となる小エリアコード(1個のみ対応)
- city_cd 検索対象となる市町村コード(1個のみ対応)
- price_min 検索対象となる最低価格
- price_max 検索対象となる最高価格
- hotel_type 宿泊施設種別コード
- c_card クレジットカード OK? 指定できる値はyのみ
- sort_by ソート種別コード
2. サンプルのクラス構成
サンプルのクラス構成は目次の「クラス構成」を参照してください。
3. 処理の流れ
本サンプルの大まかな処理の流れは下記の図のとおりです。なお、display_sdb_results.php ではPageHeaderは使用していません。
hotels.php , hotel_results.php , hotel_details.php (上級サンプル)の場合:
サンプルのアプリケーションごとの処理の流れは下記のとおりです。
3.1. display_sdb_results.php
display_sdb_results.php では、下記の手順で検索結果をブラウザ上に表示します。
- VCSDBDriverHotel を初期化し、パラメータを設定します。
- VCSDBDriverHotelを利用してサービスデータベースへの問い合わせを行い、検索結果を取得します。
- PageBody にHTMLファイルと検索結果を渡して初期化します。
- PageBody の内容をサイト上に表示します。
3.2. search_filter_results.php
search_filter_results.php では、下記の手順で検索結果をブラウザ上に表示します。
- VCSDBDriverHotel を初期化します。
- PageHeader にHTMLファイルを渡して初期化します。
- PageHeader で管理しているパラメータ情報でVCSDBDriverHotelのパラメータを設定します。
- VCSDBDriverHotelを利用してウェブサービス データベースへの問い合わせを行い、検索結果を取得します。
- PageBody にHTMLファイルと検索結果を渡して初期化します。
- PageHeaderの内容をサイト上に表示します。
- PageBody の内容をサイト上に表示します。
3.3. advanced_filters_results.php
advanced_filters_results.php では、下記の手順で検索結果をブラウザ上に表示します。
- VCSDBDriverHotel を初期化します。
- PageHeader にHTMLファイルを渡して初期化します。
- PageHeader で管理しているパラメータ情報でVCSDBDriverHotelのパラメータを設定します。
- VCSDBDriverHotelを利用してウェブサービス データベースへの問い合わせを行い、検索結果を取得します。
- PageBody にHTMLファイルと検索結果を渡して初期化します。
- PageHeaderの内容をサイト上に表示します。
- PageBody の内容をサイト上に表示します。
advanced_filters_results.php と search_filter_results.php の違いは、PageHeaderとPageBody に 渡すHTMLファイルのみです。advanced_filters_results.php で利用している、AdvancedFiltersForm.html では JavaScriptを利用して、より高度でインタラクティブな画面を提供しています。
3.4. display_tour_results.php
display_tour_results.php では、下記の手順で検索結果をブラウザ上に表示します。
- VCSDBDriverTour を初期化します。
- PageHeader にHTMLファイルを渡して初期化します。
- PageHeader で管理しているパラメータ情報でVCSDBDriverTourのパラメータを設定します。
- VCSDBDriverTourを利用してウェブサービスデータベースへの問い合わせを行い、検索結果を取得します。
- PageBody にHTMLファイルと検索結果を渡して初期化します。
- PageHeaderの内容をサイト上に表示します。
- PageBody の内容をサイト上に表示します。
3.5. display_air_ticket_results.php
display_air_ticket_results.php では、下記の手順で検索結果をブラウザ上に表示します。
- VCSDBDriverAirTicket を初期化します。
- PageHeader にHTMLファイルを渡して初期化します。
- PageHeader で管理しているパラメータ情報でVCSDBDriverAirTicketのパラメータを設定します。
- VCSDBDriverAirTicketを利用してウェブサービスデータベースへの問い合わせを行い、検索結果を取得します。
- PageBody にHTMLファイルと検索結果を渡して初期化します。
- PageHeaderの内容をサイト上に表示します。
3.6. hotels.php, hotel_results.php, hotel_details.php
3.6.1. hotels.php (トップページ)
hotels.php では、下記の手順でトップページをブラウザ上に表示します。
PageFrame にHTMLファイルを渡して初期化します。 (この時初期設定PageFrameConfig.phpが読み込まれます)
PageFrame にてHTMLでHTML内にあるホテル検索フォーム用の置換コードがあるかどうか確認、あれば表示準備をします。
PageFrame でHTML内にあるおすすめホテル用の置換コードがあるかどうか確認、あれば表示準備をします。
PageFrame の内容をサイト上に表示します。
3.6.2. hotel_results.php (検索結果一覧ページ)
hotel_results.php では、下記の手順で検索結果一覧ページをブラウザ上に表示します。
PageFrame にHTMLファイルを渡して初期化します (この時初期設定PageFrameConfig.phpが読み込まれます)
PageFrame でHTML内にホテル検索フォームの表示置換コードの有無を判定し、有れば表示準備をする
PageFrame でHTML内にあるおすすめホテル用の置換コードがあるかどうか確認、あれば表示準備をします。
PageFrame でHTML内に検索結果一覧の表示置換コードの有無を判定し、有れば表示準備をする
PageFrame の内容をサイト上に表示します。
3.6.3. hotel_details.php (検索結果詳細ページ)
hotel_details.php では、下記の手順でホテル詳細ページをブラウザ上に表示します。
PageFrame にHTMLファイルを渡して初期化します (この時初期設定PageFrameConfig.phpが読み込まれます)
PageFrame でHTML内にホテル詳細情報の表示置換コードの有無を判定し、有れば表示準備をする
PageFrame でHTML内にあるおすすめホテル用の置換コードがあるかどうか確認、あれば表示準備をします。
PageFrame でHTML内に最寄りホテルの表示置換コードの有無を判定し、有れば表示準備をする
PageFrame の内容をサイト上に表示します。
4. 拡張/流用のためのヒント
以下にこのサンプルを拡張または流用して独自のWebアプリケーションを作成するのに有用なヒントをまとめました。
4.1. 表示スタイルのみカスタマイズする場合
本サンプルの機能はそのままに、表示スタイルだけを変更したい場合は、./Views ディレクトリ以下にあるHTMLファイルを編集してください。 HTMLファイル中に、"${" と "}"で囲まれた文字列がありますが、これらはサンプルのPHPプログラムが動的に置き換える箇所です。ここでは、 置き換え文字列と呼んでいます。
4.1.1. ページヘッダ部分
search_filter_results.php と advanced_filters_results.php でWebページ先頭に表示される検索条件入力 部分をこのサンプルでは「ページヘッダ」と呼んでいます。このページの制御は、いずれも PageHeader.php で行っていますが、 それぞれ別のHTMLファイルを利用してレイアウトを行っています。 search_filter_results.php では ./Views/SearchFilterForm.html そして advanced_filters_results.php では AdvancedFilterForm.html がそれにあたります。
ページヘッダ部分で使用することのできる置き換え文字列には下記のものがあります。
- ${KEYWORD} ブラウザで keyword パラメータが指定されていた場合、その内容と置き換えます。指定されていなかった場合は、削除されます。
- ${LAREA_CD} 大エリアのリストをOPTIONタグ化したものに置き換えられます。
- ${SAREA_CD} larea_cdの大エリアに属する小エリアのリストをOPTIONタグ化したものに置き換えられます。
- ${SAREA_STATUS} 小エリアのリストが空の場合、'disabled="disabled"'という文字列に置き換えます。指定されている場合は削除されます。
- ${CITY_CD} sarea_codeの小エリアに属する市町村のリストをOPTIONタグ化したものに置き換えられます。
- ${CITY_STATUS} 市町村エリアのリストが空の場合、'disabled="disabled"'という文字列に置き換えます。指定されている場合は削除されます。
- ${PRICE_MIN} price_minパラメータが設定されていた場合、その価格に置き換えます。指定されていない場合は削除されます。
- ${PRICE_MIN} price_maxパラメータが設定されていた場合、その価格に置き換えます。指定されていない場合は削除されます。
- ${HOTEL_TYPES} 宿泊施設種別のリストをOPTIONタグ化したものに置き換えられます。
- ${C_CARD} c_card パラメータが設定されていた場合、checkedという文字列に置き換えます。
- ${SORT_BY} ソート遵守別のリストをOPTIONタグ化したものに置き換えられます。
- ${FLIPPER_ON} ${FLIPPER_OFF} advanced_filters_results.php で使用されている詳細設定部分の表示非表示切り替えに使用しています。
4.1.2. ページ制御部分
商品リストの上下に表示しているページ移動用のリンクを表示している領域を、このサンプルでは「ページ制御部分」と呼んでいます。3サンプル全て共通の Pagination.php で 制御を行い、Views/Pagination.html でレイアウトを設定しています。
ページ制御部分で使用する事の出来る置き換え文字列には以下のものがあります。
- ${TOTAL_COUNT} サービスデータベースAPIが返す総検索結果数に置き換えます。
- ${START} 検索結果の何番目から表示しているかを示す数字に置き換えます。
- ${END} 検索結果の何番目まで表示しているかを示す数字に置き換えます。
- ${CONTROLS} 最初|前へ|1 2 3 4 ... 等、ページ移動用のリンクに置き換わります。
4.1.3. 商品リスト部分
検索結果として返された情報のリストを表示する領域を、このサンプルでは「商品リスト部分」と呼んでいます。3サンプル全て共通の、FormattedItem.phpで制御を行い、 advanced_filters_results.phpでは、FormattedDetailedItem.html でレイアウトを設定し、その他のサンプルアプリケーションでは、FormattedItem.htmlで レイアウトを設定しています。
ページ制御部分で使用する事の出来る置き換え文字列には以下のものがあります。
- ${TITLE} ホテル名
- ${IMAGE} 商品画像(ホテル画像)リンクURL
- ${LINK} 商品リンクURL
- ${DESCRIPTION} 商品概要
- ${PRICE} 参考最低価格、フォーマット済
- ${PVIMG} PVタグ
- ${ACCESS_INFO} アクセス情報
- ${GOOGLE_MAP_LINK} Google Maps へのリンク
4.2. 検索対象となる項目を追加したい場合
検索対象となる項目を新たに追加したい場合は、PageHeader.phpにパラメータや置換文字列を実装し、 ページヘッダ部分のHTMLファイルに新しく実装した置き換え文字列を追加します。
追加手順は以下のとおりです。
- サービスデータベースAPIリファレンスを参考にして、新しく追加したい検索パラメータを選ぶ。
- PageHeaderクラスに、追加した検索パラメータと同名のメンバ変数を追加する
- PageHeaderクラスのコンストラクタに、$_GETからそのパラメータを取得して新しいメンバ変数に指定する処理を追加する。(既存のコードを参考にしてください)
- PageHeaderクラスのassignParams()メソッドで、新しいメンバ変数の値が有効であれば $hotel->setParam()でその値をAPIに指定する処理を追加する。(既存のコードを参考にしてください)
- PageHeaderクラスのshow()メソッドで、新しいメンバ変数の値が有効であれば、新しい置き換え文字列と置き換える処理を追加する。(既存のコードを参考にしてください)
- PageHeader.php用のHTMLファイルを編集して、新しいパラメータのエントリを追加し、デフォルト値が置き換え文字列になるよう記述する。(既存のコードを参考にしてください)
4.3. 検索結果に表示される項目を追加したい場合
検索結果の項目を新たに追加したい場合は、以下の手順で実現できます。
- サービスデータベースAPIリファレンスを参考にして、新しく追加したい商品情報項目を選ぶ。この際、リファレンス上にある"vc:"という記述は、すべて"vc_"に置き換わっていますので、注意が必要です。
- FormatItem.phpでSimpleXMLElementオブジェクトから必要な情報を取得して、新しい置き換え文字列と置き換える処理を実装する。
- FormatItem.php用のHTMLファイルを編集して、新しい置き換え文字列を追加する。
4.4. VCSDBDriver を利用して独自のアプリケーションを作成したい場合
./VCSDBDriver ディレクトリ以下におかれているファイルは、サービスデータベースにアクセスする為の「ドライバー」としての役割を持っていますが、本サンプル内での使用に限らず 汎用的に利用できるよう工夫されています。詳細については、本ドキュメントのVCSDBDriverBase, VCDBDriverHotelの項目を参照し、本サンプルに附属している3つのアプリケーションの ソースを参考にしてご利用ください。