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 のインスタンスを返します。

PHPSOAPClient には 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();