多くの組織は、Web アプリケーション環境として Apach と PHP を採用しています。 Web サービス モードで PHP を採用するのは難しいように思えるかもしれません。しかし実際には、NuSoap を使用すると、PHP を使用して SOAP クライアントとサーバーを簡単に構築できます。
NuSoap と PHP を使用して Web サービスを構築する方法を説明するために、簡単な例を示します。このサンプル アプリケーションは、PHP Web サービス サーバーとクライアントで構成されます。これは、文字列内の文字の順序を反転する機能と、2 つの数値の合計を求める機能の 2 つを実装します。
PHP SOAP サーバー PHP と NuSoap を使用すると、SOAP サーバーのセットアップが非常に簡単になります。基本的には、Web サービスに公開したい関数を記述し、NuSoap に登録するだけです。
PHP SOAP サーバーの確立を完了するには、あと 2 つの手順が必要です。まず、PHP コードで NuSoap オブジェクトのインスタンスを作成し、次に HTTP POST メソッドを使用して生データを処理のために NuSoap に渡す必要があります。簡単そうに思えますか?まずリスト 1 を見てみましょう。
リスト 1:soapfunc.php
<?
require_once('nusoap.php');
関数リバース($str){
$retval = "";
if(strlen($str) < 1) {
return newsoap_fault('クライアント','','無効な文字列');
}
for ($i = 1; $i <= strlen($str); $i++) {
$retval .= $str[(strlen($str) - $i)];
}
$retval を返します。
関数 add2numbers($num1, $num2)
{
if (trim($num1) != intval($num1)) {
return newsoap_fault('クライアント', '', '最初の番号は無効です');
}
if (trim($num2) != intval($num2)) {
return newsoap_fault('クライアント', '', '2 番目の番号は無効です');
}
戻り値 ($num1 + $num2);
}
?>
リスト 1 に、soapfunc.php のソース ファイルを示します。このファイルには、SOAP プロトコルを通じて Web サービスに公開する 2 つの関数、reverse と add2numbers が含まれています。これらは、Web サービス アプリケーションの中核です。 reverse 関数は引数を 1 つ受け取り、文字列内の文字の順序を逆にしてそれを返します。
リスト 2:soapserver.php
<?
require_once('nusoap.php');
include('soapfunc.php');
$soap = 新しいsoap_server;
$soap->register('reverse');
$soap->register('add2numbers');
$soap->サービス($HTTP_RAW_POST_DATA);
?>
リスト 2 は、NuSoap 登録関数の使用と SOAP ハンドラーの呼び出しを示しています。ご覧のとおり、2 つの関数 (soapfunc.php 内) を登録し、POST データをsoap_server オブジェクトに渡すことは、soap_server オブジェクトの新しいインスタンスを作成するのと同じくらい簡単です。 soap_server オブジェクトは POST データを調べて呼び出す関数を決定し、パラメータをこの PHP 関数に渡します。 PHP 関数から返されたデータは、SOAP 応答に再パッケージ化され、サービスを要求している SOAP クライアントに配信されます。
PHP SOAP クライアント NuSoap と PHP を使用して SOAP サーバーを作成したので、それをテストする必要があります。 SOAP サーバー プログラムを作成したのと同じように、NuSoap を使用して PHP で SOAP クライアント プログラムを作成できます。リスト 3 に、PHP SOAP クライアント プログラムのソース プログラムを示します。
NuSoap と PHP を使用して SOAP サーバーを作成したので、それをテストする必要があります。 SOAP サーバー プログラムを作成したのと同じように、NuSoap を使用して PHP で SOAP クライアント プログラムを作成できます。リスト 3 に、PHP SOAP クライアント プログラムのソース プログラムを示します。
リスト 3:soapclient.php
<?
include('nusoap.php');
$client = newsoapclient('http://localhost/soapserver.php');
$str = "この文字列は反転されます";
$params1 = array('str'=>$str);
$reversed = $client->call('reverse',$params1);
echo "'$str' を逆にすると、'$reversed' が得られます<br>n"
;
$n2 = 14;
$params2 = array('num1'=>$n1, 'num2'=>$n2);
$added = $client->call('add2numbers', $params2);
echo "$n1 と $n2 を追加すると $added が得られます<br>n";
?>
SOAP サーバー上で PHP クライアント プログラムを使用するには、3 つのことを行う必要があります。まず、soapclient オブジェクトを作成する必要があります。 soapclient オブジェクトは、パラメータと SOAP プロトコルのマーシャリングを処理します。 soapclient には URL でなければならないパラメータが必要です。この URL は、HTTP エンドポイントまたは実際の SOAP サーバーの WSDL 記述を指すことができます。この場合、これは PHP SOAP サーバーを指す URL です。
パラメーターを必要とする関数を呼び出す場合は、最初にキーと値のペアのセットを含むパラメーター配列を作成する必要があります。キーはパラメータの名前で、値はパラメータの値です。
関数を呼び出す必要がある場合は、soapclient オブジェクトを使用して関数を呼び出し、2 つのパラメーターを渡します。最初のパラメータは呼び出したい関数の名前で、2 番目のパラメータは SOAP 関数のパラメータを含む配列です。呼び出した関数は呼び出した SOAP 関数の値を返します。
この例を実行するには、Web ブラウザにsoapclient.phpのURLを入力するだけです。次のような出力が得られます。
「この文字列は反転されます」を反転すると、「desrever eb lliw gnirts sihT」が得られます。5 と 14 を追加すると、19 が得られます。