Zend_Service_StrikeIron: 応用編

注意:このドキュメントでは、英語版のリビジョン 22768 の更新内容をスキップしています。

このセクションでは、Zend_Service_StrikeIron のより進んだ使用法を説明します。

WSDL によるサービスの使用

StrikeIron のサービスの中には PHP のラッパークラスが存在するものもあります。 これらについては バンドルされているサービス を参照ください。しかし、StrikeIron には何百ものサービスがあり、 中には便利なものも多くあります。 これらについても、ラッパークラスを作成せずに利用できます。

ラッパークラスが存在しない StrikeIron サービスを使用するには、 getService() のオプションに class ではなく wsdl を指定します。

  1. $strikeIron = new Zend_Service_StrikeIron(array('username' => 'あなたのユーザ名',
  2.                                                 'password' => 'あなたのパスワード'));
  3.  
  4. // Reverse Phone Lookup サービス用の汎用クライアントを取得します
  5. $phone = $strikeIron->getService(
  6.     array('wsdl' => 'http://ws.strikeiron.com/ReversePhoneLookup?WSDL')
  7. );
  8.  
  9. $result = $phone->lookup(array('Number' => '(408) 253-8800'));
  10. echo $result->listingName;
  11.  
  12. // 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() のような適切なメソッドをコールします。

  1. $strikeIron =
  2.     new Zend_Service_StrikeIron(array('username' => 'あなたのユーザ名',
  3.                                       'password' => 'あなたのパスワード',
  4.                                       'options'  => array('trace' => true)));
  5.  
  6. // Sales & Use Tax Basic サービス用のクライアントを取得します
  7. $taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));
  8.  
  9. // メソッドをコールします
  10. $taxBasic->getTaxRateCanada(array('province' => 'ontario'));
  11.  
  12. // SOAPClient のインスタンスを取得し、XML を表示します
  13. $soapClient = $taxBasic->getSoapClient();
  14. echo $soapClient->__getLastRequest();
  15. echo $soapClient->__getLastResponse();
blog comments powered by Disqus