Zend_Service_StrikeIron-AdvancedUses.xml 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 17175 -->
  4. <sect1 id="zend.service.strikeiron.advanced-uses">
  5. <title>Zend_Service_StrikeIron: 応用編</title>
  6. <para>
  7. このセクションでは、<classname>Zend_Service_StrikeIron</classname>
  8. のより進んだ使用法を説明します。
  9. </para>
  10. <sect2 id="zend.service.strikeiron.advanced-uses.services-by-wsdl">
  11. <title>WSDL によるサービスの使用</title>
  12. <para>
  13. StrikeIron のサービスの中には <acronym>PHP</acronym> のラッパークラスが存在するものもあります。
  14. これらについては
  15. <link linkend="zend.service.strikeiron.bundled-services">バンドルされているサービス</link>
  16. を参照ください。しかし、StrikeIron には何百ものサービスがあり、
  17. 中には便利なものも多くあります。
  18. これらについても、ラッパークラスを作成せずに利用することができます。
  19. </para>
  20. <para>
  21. ラッパークラスが存在しない StrikeIron サービスを使用するには、
  22. <methodname>getService()</methodname> のオプションに
  23. <code>class</code> ではなく <code>wsdl</code> を指定します。
  24. <programlisting language="php"><![CDATA[
  25. $strikeIron = new Zend_Service_StrikeIron(array('username' => 'あなたのユーザ名',
  26. 'password' => 'あなたのパスワード'));
  27. // Reverse Phone Lookup サービス用の汎用クライアントを取得します
  28. $phone = $strikeIron->getService(
  29. array('wsdl' => 'http://ws.strikeiron.com/ReversePhoneLookup?WSDL')
  30. );
  31. $result = $phone->lookup(array('Number' => '(408) 253-8800'));
  32. echo $result->listingName;
  33. // Zend Technologies USA Inc
  34. ]]></programlisting>
  35. </para>
  36. <para>
  37. StrikeIron サービスを WSDL から使用するには、
  38. WSDL ファイルについての基礎知識が必要です。
  39. StrikeIron のサイトには、そのためのリソースも豊富に用意されています。
  40. また、
  41. <ulink url="http://horde.org">Horde プロジェクト</ulink> の
  42. <ulink url="http://janschneider.de">Jan Schneider</ulink> が、
  43. WSDL ファイルを読みやすく HTML 形式に変換するための
  44. <ulink url="http://janschneider.de/news/25/268">ちょっとした
  45. <acronym>PHP</acronym> のルーチン</ulink>
  46. を公開しています。
  47. </para>
  48. <para>
  49. 公式にサポートしているのは、
  50. <link linkend="zend.service.strikeiron.bundled-services">バンドルされているサービス</link>
  51. に挙げられているものだけであることに注意しましょう。
  52. </para>
  53. </sect2>
  54. <sect2 id="zend.service.strikeiron.viewing-soap-transactions">
  55. <title>SOAP トランザクションの表示</title>
  56. <para>
  57. StrikeIron との通信は、すべて <acronym>SOAP</acronym> 拡張モジュールを用いて行います。
  58. StrikeIron との間でやり取りする <acronym>XML</acronym> の内容を確認できると、
  59. デバッグ時に便利です。
  60. </para>
  61. <para>
  62. すべての StrikeIron クライアント (<classname>Zend_Service_StrikeIron_Base</classname>
  63. のサブクラス) には <methodname>getSoapClient()</methodname> メソッドが存在します。
  64. これは、StrikeIron との通信に使用している
  65. <code>SOAPClient</code> のインスタンスを返します。
  66. </para>
  67. <para>
  68. <acronym>PHP</acronym> の
  69. <ulink url="http://www.php.net/manual/ja/function.soap-soapclient-construct.php">SOAPClient</ulink>
  70. には <code>trace</code> オプションがあり、これを使用すると直前のトランザクションで交換された
  71. <acronym>XML</acronym> を取得することができます。<classname>Zend_Service_StrikeIron</classname> は、デフォルトでは
  72. <code>trace</code> を有効にしません。しかし、<code>SOAPClient</code>
  73. に渡すオプションを指定することで、この挙動は簡単に変更できます。
  74. </para>
  75. <para>
  76. <acronym>SOAP</acronym> のトランザクションを見るには、
  77. <methodname>getSoapClient()</methodname> メソッドをコールして
  78. <code>SOAPClient</code> のインスタンスを取得し、
  79. <ulink url="http://www.php.net/manual/ja/function.soap-soapclient-getlastrequest.php"><methodname>__getLastRequest()</methodname></ulink>
  80. <ulink url="http://www.php.net/manual/ja/function.soap-soapclient-getlastresponse.php"><methodname>__getLastRequest()</methodname></ulink>
  81. のような適切なメソッドをコールします。
  82. <programlisting language="php"><![CDATA[
  83. $strikeIron =
  84. new Zend_Service_StrikeIron(array('username' => 'あなたのユーザ名',
  85. 'password' => 'あなたのパスワード',
  86. 'options' => array('trace' => true)));
  87. // Sales & Use Tax Basic サービス用のクライアントを取得します
  88. $taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));
  89. // メソッドをコールします
  90. $taxBasic->getTaxRateCanada(array('province' => 'ontario'));
  91. // SOAPClient のインスタンスを取得し、XML を表示します
  92. $soapClient = $taxBasic->getSoapClient();
  93. echo $soapClient->__getLastRequest();
  94. echo $soapClient->__getLastResponse();
  95. ]]></programlisting>
  96. </para>
  97. </sect2>
  98. </sect1>