TOP書籍連動> アプリケーションの設計
SOAPの紹介
SOAPの紹介

第4回:アプリケーションの設計

著者:Alessandro Sfondrini   2006/3/17
1   2  3  次のページ
アプリケーションの設計

   アプリケーションはNuSOAPライブラリをベースとした"client.php"と"server.php"の、2つのPHPファイルから構成されることに注意してください。このWebサービスはとても基本的なものですから、WSDLファイルは使用しません。それでは構造を見ていきましょう。

   "client.php"では、リモートメソッドであるget_transaction()にパラメートとしてトランザクションID(tid)と顧客ID(cid)を送信して、トランザクションに関する情報を検索するSOAPメッセージを送信します。

   すると、リモートアプリケーションがステータスコード(「OK」、「pending」、「failed」)や、トランザクション量や、2つのID(エラーが生じていないことを確認するためのものです)を返します。さらに、"server.php"は、それらの変数にdate()の現在値を追加します。

   "server.php"では、最初にリモートメソッドが正しい方法(例えばPOST経由)で呼び出されたかどうか確認します。次に、要求されたデータがすべて提供されたか確認します。つまり、要求されたデータをデータベース(通常MySQLを使用します)から取得し、それを送り返そうとしています。

   リスト4では、使用するテーブルのダンプを検索することができます。

リスト4
# "transactions"のダンプ

CREATE TABLE transactions(
  tid INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  cid INT UNSIGNED NOT NULL ,
  description VARCHAR(30) NOT NULL ,
  amount FLOAT(7,2) UNSIGNED NOT NULL ,
  STATUS ENUM('pending','failed','OK')
        DEFAULT 'pending' NOT NULL ,
  PRIMARY KEY (tid)
);


クライアントアプリケーションを書く

   リスト2を見てください。最初にNuSOAPをインクルードし、先の例で行ったようにクライアントオブジェクトを作成します。$wsdlブールパラメータがないことに注意してください。

リスト2(再掲)
<?php
/* クライアントファイル */

require("nusoap.php");
$s = new soapclient("http://host/server.php");
    /* クライアントオブジェクトを作成 */

$params = array('tid'=>4636, // トランザクションID
                'cid'=>1059);// 顧客ID

$res = $s -> call('get_transaction', $params);
    /* リモートメソッドの呼び出し */

if(isset($fault)) // もしfaultが起きた場合
  die($fault);  // それを表示し終了

if($params['tid'] != $res['tid'])
  die('トランザクションIDが一致しません');
if($params['cid'] != $res['cid'])
  die('顧客IDが一致しません');
    /* tid と cid のチェック */

echo '量 '.$res['amount'].' ステータス '.$res['status'];
?>

   つまり、FALSEと仮定され、WSDLファイルはこのWebサービスでは利用できません。次に、$params連想配列にリモートアプリケーションの入力データを保存します。これが実際のアプリケーションであれば、入力データは、ユーザによって送信されたフォームから、または$_SESSION配列から、あるいはデータベースから取得されることに注意してください。

   よりシンプルなコードにするため、データをどこから取得したかは気にせず、ともかく、この配列にデータが格納されていると仮定しましょう大変な作業はNuSOAPが行ってくれます。

   たった1行のコードだけで、リクエストを構築し、送信し、検索し、レスポンスを解析します。素晴らしいことだと思いませんか?

   $resに結果が保持された後に、問題が起きていないか確認します(NuSOAPによって作成された$fault 値を解析します)。また、送信したIDと返されたIDとが一致しているかどうか確認します。最後に、結果を表示します。

   これは本当に基本的なプログラムです。できるだけ単純なWebサービスのアプリケーションを構築しています。プログラム初心者のために紹介される「Hello World」と表示するコードのようなものです。実用的なサーバファイルを書く場合には、もう少し複雑になります。

1   2  3  次のページ

PHPプログラマーズマガジン 書籍紹介
PHPプログラマーズマガジン

PHPプログラマーズマガジンは、PDF形式で読者の方にお届けするPHP言語(PHP: Hypertext Processor)専門誌です。 カナダMTA出版のphp|architect誌を日本語に翻訳し、独自の記事を加えて月刊でお届けしています。

発行:アシアル株式会社  価格:1,029円

 ご購入はこちら
http://www.asial.co.jp/magazine/
Alessandro Sfondrini
著者プロフィール
Alessandro Sfondrini
イタリアのコモ出身の若いプログラマであり、PHPとC言語に関連したWebサービスに興味をもっています。また、近日出版される『php|a Nanobook"Practical Web Services"』の著者です。


INDEX
第4回:アプリケーションの設計
  アプリケーションの設計
  サーバファイルを書く
  本連載で紹介したアプリケーションが可能とすること