Zend_Service_StrikeIron: 応用編
注意:このドキュメントでは、英語版のリビジョン 22768 の更新内容をスキップしています。
このセクションでは、Zend_Service_StrikeIron
のより進んだ使用法を説明します。
WSDL によるサービスの使用
StrikeIron のサービスの中には PHP のラッパークラスが存在するものもあります。
これらについては
バンドルされているサービス
を参照ください。しかし、StrikeIron には何百ものサービスがあり、
中には便利なものも多くあります。
これらについても、ラッパークラスを作成せずに利用できます。
ラッパークラスが存在しない StrikeIron サービスを使用するには、
getService() のオプションに
class
ではなく wsdl
を指定します。
$strikeIron =
new Zend_Service_StrikeIron
(array('username' =>
'あなたのユーザ名',
'password' => 'あなたのパスワード'));
// Reverse Phone Lookup サービス用の汎用クライアントを取得します
$phone = $strikeIron->getService(
array('wsdl' =>
'http://ws.strikeiron.com/ReversePhoneLookup?WSDL')
);
$result =
$phone->
lookup(array('Number' =>
'(408) 253-8800'));
echo $result->
listingName;
// Zend Technologies USA Inc
StrikeIron サービスを WSDL から使用するには、
WSDL ファイルについての基礎知識が必要です。
StrikeIron のサイトには、そのためのリソースも豊富に用意されています。
また、
» Horde プロジェクト の
» Jan Schneider が、
WSDL ファイルを読みやすく HTML 形式に変換するための
» ちょっとした
PHP のルーチン
を公開しています。
公式にサポートしているのは、
バンドルされているサービス
に挙げられているものだけであることに注意しましょう。
SOAP トランザクションの表示
StrikeIron との通信は、すべて SOAP 拡張モジュールを用いて行います。
StrikeIron との間でやり取りする XML の内容を確認できると、
デバッグ時に便利です。
すべての StrikeIron クライアント (Zend_Service_StrikeIron_Base
のサブクラス) には getSoapClient() メソッドが存在します。
これは、StrikeIron との通信に使用している
SOAPClient
のインスタンスを返します。
PHP の
» SOAPClient
には trace
オプションがあり、これを使用すると直前のトランザクションで交換された
XML を取得できます。Zend_Service_StrikeIron は、デフォルトでは
trace
を有効にしません。しかし、SOAPClient
に渡すオプションを指定することで、この挙動は簡単に変更できます。
SOAP のトランザクションを見るには、
getSoapClient() メソッドをコールして
SOAPClient
のインスタンスを取得し、
» __getLastRequest()
や
» __getLastRequest()
のような適切なメソッドをコールします。
$strikeIron =
new Zend_Service_StrikeIron
(array('username' =>
'あなたのユーザ名',
'password' => 'あなたのパスワード',
'options' =>
array('trace' =>
true)));
// Sales & Use Tax Basic サービス用のクライアントを取得します
$taxBasic =
$strikeIron->
getService(array('class' =>
'SalesUseTaxBasic'));
// メソッドをコールします
$taxBasic->
getTaxRateCanada(array('province' =>
'ontario'));
// SOAPClient のインスタンスを取得し、XML を表示します
$soapClient = $taxBasic->getSoapClient();
echo $soapClient->__getLastRequest
();
echo $soapClient->__getLastResponse
();