1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 21740 -->
4 <sect1 id="zend.service.strikeiron">
5 <title>Zend_Service_StrikeIron</title>
8 <classname>Zend_Service_StrikeIron</classname> は、StrikeIron
9 ウェブサービス用の <acronym>PHP</acronym> 5 クライアントです。以下のセクションを参照ください。
14 <listitem><para><xref linkend="zend.service.strikeiron" /></para></listitem>
17 <listitem><para><xref linkend="zend.service.strikeiron.bundled-services" /></para></listitem>
20 <listitem><para><xref linkend="zend.service.strikeiron.advanced-uses" /></para></listitem>
24 <sect2 id="zend.service.strikeiron.overview">
28 <ulink url="http://www.strikeiron.com">StrikeIron</ulink>
29 は、さまざまな商用データサービス ("Data as a Service") を提供しています。たとえば
30 Online Sales Tax, Currency Rates, Stock Quotes, Geocodes, Global
31 Address Verification, Yellow/White Pages, MapQuest Driving Directions,
32 Dun & Bradstreet Business Credit Checks などのサービスがあります。
36 StrikeIron ウェブサービスの各サービスは、標準の <acronym>SOAP</acronym> (および REST)
37 <acronym>API</acronym> を共有しています。これにより、複数のサービスを統合して管理するのが簡単になります。
38 StrikeIron はまた、すべてのサービスの支払いを単一のアカウントで管理しています。
39 ソリューションプロバイダにとって完璧な環境といえます。
40 <ulink url="http://www.strikeiron.com/sdp">http://www.strikeiron.com/sdp</ulink>
41 で、フリーなウェブサービスを試してみましょう。
46 <ulink url="http://jp.php.net/soap"><acronym>PHP</acronym> 5 の <acronym>SOAP</acronym> 拡張モジュール</ulink>
48 しかし、StrikeIron をこの方法で使用すると、
49 真の <acronym>PHP</acronym> 風インターフェイスを活用することができません。
50 <classname>Zend_Service_StrikeIron</classname> コンポーネントは、<acronym>SOAP</acronym>
51 拡張モジュールの上にもう一枚薄い皮をかぶせることによって、
52 StrikeIron のサービスをより便利かつ <acronym>PHP</acronym>
58 <classname>Zend_Service_StrikeIron</classname> を使うには、
59 <acronym>PHP</acronym> 5 の <acronym>SOAP</acronym> 拡張モジュールがインストールされて有効になっている必要があります。
64 <classname>Zend_Service_StrikeIron</classname> コンポーネントが提供する機能を以下にまとめます。
69 StrikeIron の認証情報の一元管理により、
70 さまざまな StrikeIron サービスで使用可能。
84 <acronym>PHP</acronym> のラッパークラスを作成しなくても、WSDL
85 だけで StrikeIcon サービスが使用可能。
87 より便利なインターフェイスを使用することも可能。
93 StrikeIron のサービスのうち、人気のある 3 つについてのラッパー。
101 <sect2 id="zend.service.strikeiron.registering">
102 <title>StrikeIron への登録</title>
104 <classname>Zend_Service_StrikeIron</classname> を使用するには、まず
105 StrikeIron 開発者アカウントを取得するために
106 <ulink url="http://strikeiron.com/Register.aspx">登録</ulink>
111 登録したら、StrikeIron のユーザ名とパスワードを受け取ります。
112 <classname>Zend_Service_StrikeIron</classname> で StrikeIron に接続する際には、
117 また、StrikeIron の Super Data Pack Web Service にも
118 <ulink url="http://www.strikeiron.com/ProductDetail.aspx?p=257">登録</ulink>
124 StrikeIron のウェブサイト上で比較的速やかに行えます。
128 <sect2 id="zend.service.strikeiron.getting-started">
129 <title>では、はじめましょう</title>
132 <ulink url="http://strikeiron.com/Register.aspx">取得</ulink>
134 <ulink url="http://www.strikeiron.com/ProductDetail.aspx?p=257">Super Data Pack</ulink>
135 にも参加したら、<classname>Zend_Service_StrikeIron</classname>
140 StrikeIron には何百ものさまざまなウェブサービスが存在します。
141 Zend_Service_StrikeIron はこれらのサービスの多くで利用可能ですが、
142 特に以下の 3 つについてはラッパークラスを用意しています。
147 <para><link linkend="zend.service.strikeiron.bundled-services.zip-code-information">ZIP Code Information</link></para>
150 <para><link linkend="zend.service.strikeiron.bundled-services.us-address-verification">US Address Verification</link></para>
153 <para><link linkend="zend.service.strikeiron.bundled-services.sales-use-tax-basic">Sales & Use Tax Basic</link></para>
158 <classname>Zend_Service_StrikeIron</classname> クラスには、
159 そのコンストラクタで StrikeIron アカウント情報やその他のオプションを設定できます。
160 また、StrikeIron の各種サービス用のクライアントを帰すファクトリメソッドも用意しています。
162 <programlisting language="php"><![CDATA[
163 $strikeIron = new Zend_Service_StrikeIron(array('username' => 'あなたのユーザ名',
164 'password' => 'あなたのパスワード'));
166 $taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));
171 <methodname>getService()</methodname> メソッドは、StrikeIron
172 のサービス用のクライアントを帰します。引数には
173 <acronym>PHP</acronym> のラッパークラスの名前を指定します。
174 この場合の <code>SalesUseTaxBasic</code> は、ラッパークラス
175 <classname>Zend_Service_StrikeIron_SalesUseTaxBasic</classname>
176 を指しています。標準で組み込まれている 3 つのラッパーについては
177 <link linkend="zend.service.strikeiron.bundled-services">バンドルされているサービス</link>
182 <methodname>getService()</methodname> は、対応する <acronym>PHP</acronym>
183 ラッパーを持たない StrikeIron サービス用のクライアントも返すことができます。
185 <link linkend="zend.service.strikeiron.advanced-uses.services-by-wsdl">WSDL によるサービスの使用</link>
190 <sect2 id="zend.service.strikeiron.making-first-query">
191 <title>はじめてのクエリ</title>
194 <methodname>getService()</methodname> で StrikeIron サービス用のクライアントを取得したら、
195 あとは普通の <acronym>PHP</acronym> オブジェクトと同様にそのメソッドをコールできます。
197 <programlisting language="php"><![CDATA[
198 $strikeIron = new Zend_Service_StrikeIron(array('username' => 'あなたのユーザ名',
199 'password' => 'あなたのパスワード'));
201 // Sales & Use Tax Basic サービス用のクライアントを取得します
202 $taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));
204 // カナダのオンタリオ州の税率を取得します
205 $rateInfo = $taxBasic->getTaxRateCanada(array('province' => 'ontario'));
206 echo $rateInfo->province;
207 echo $rateInfo->abbreviation;
211 上の例では、<methodname>getService()</methodname> メソッドを使用して
212 <link linkend="zend.service.strikeiron.bundled-services.sales-use-tax-basic">Sales & Use Tax Basic</link>
213 サービス用のクライアントを取得しています。
214 取得したオブジェクトは <code>$taxBasic</code> に保存します。
218 次に、そのサービスの <methodname>getTaxRateCanada()</methodname>
219 メソッドをコールします。メソッドに対してキーワードパラメータを渡すには
220 連想配列を使用します。これは、すべての StrikeIron
225 <methodname>getTaxRateCanada()</methodname> の返り値を
226 <code>$rateInfo</code> に取得し、そのプロパティ <code>province</code>
227 や <constant>GST</constant> を参照しています。
231 StrikeIron のサービスの多くは、この例と同じくらい簡単に使用できます。
232 3 つの StrikeIron サービスについての詳細は
233 <link linkend="zend.service.strikeiron.bundled-services">バンドルされているサービス</link>
238 <sect2 id="zend.service.strikeiron.examining-results">
241 StrikeIron サービスについて学習したりデバッグしたりする際には、
242 メソッドから返された内容を出力できると便利です。
244 <classname>Zend_Service_StrikeIron_Decorator</classname> のインスタンスとなります。
246 <ulink url="http://ja.wikipedia.org/wiki/Decorator_%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3">デコレータ</ulink>
247 オブジェクトであり、メソッドのコール結果をラップしています。
251 サービスが返した結果を調べる最も単純な方法は、
252 <ulink url="http://www.php.net/print_r">print_r()</ulink>
253 のような <acronym>PHP</acronym> の組み込み関数を使うことです。
255 <programlisting language="php"><![CDATA[
257 $strikeIron = new Zend_Service_StrikeIron(array('username' => 'あなたのユーザ名',
258 'password' => 'あなたのパスワード'));
260 $taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));
262 $rateInfo = $taxBasic->getTaxRateCanada(array('province' => 'ontario'));
266 Zend_Service_StrikeIron_Decorator Object
268 [_name:protected] => GetTaxRateCanadaResult
269 [_object:protected] => stdClass Object
272 [province] => ONTARIO
283 上の例でわかるように、デコレータ (<code>$rateInfo</code>) が
284 <code>GetTaxRateCanadaResult</code> というオブジェクトをラップしています。
285 これが <methodname>getTaxRateCanada()</methodname> の返り値です。
289 この結果から、<code>$rateInfo</code> には <code>abbreviation</code>
290 や <code>province</code>、<constant>GST</constant>
291 といった公開プロパティがあることがわかります。これらは
292 <code>$rateInfo->province</code> のようにしてアクセスできます。
297 StrikeIron の結果のプロパティは、場合によっては大文字で始まっていることもあります
298 (<code>Foo</code> や <code>Bar</code> など)。一方、たいていの <acronym>PHP</acronym>
299 オブジェクトのプロパティは、普通は小文字で始まる形式 (<code>foo</code>
300 や <code>bar</code> など) です。このあたりはデコレータがうまく処理するので、
301 プロパティが <code>Foo</code> であっても
302 <code>foo</code> として取得できるようになります。
307 もしデコレータではなく中身のオブジェクトそのものやその名前がほしい場合は、
308 それぞれ <methodname>getDecoratedObject()</methodname> および
309 <methodname>getDecoratedObjectName()</methodname> を使用します。
313 <sect2 id="zend.service.strikeiron.handling-errors">
316 先ほどの例はあまりにも無邪気すぎるところがありました。
318 メソッドをコールした際に、StrikeIron がエラーを返す可能性だってあります。
319 認証情報が間違っていたり、アカウントが有効期限切れになっていた場合などに
320 StrikeIron はエラーを発します。
326 サービスのメソッドをコールする際には例外処理を書く必要があります。
328 <programlisting language="php"><![CDATA[
329 $strikeIron = new Zend_Service_StrikeIron(array('username' => 'あなたのユーザ名',
330 'password' => 'あなたのパスワード'));
332 $taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));
336 $taxBasic->getTaxRateCanada(array('province' => 'ontario'));
338 } catch (Zend_Service_StrikeIron_Exception $e) {
345 スローされる例外は、常に <classname>Zend_Service_StrikeIron_Exception</classname>
350 メソッドコール時の通常の失敗と例外の違いはしっかり把握しておきましょう。
351 例外が発生するのは、<emphasis>例外的な</emphasis>
352 状態です。たとえばネットワークの障害が発生したとか
353 アカウントが有効期限切れになっていたとかいった状況がそれにあたります。
354 通常の失敗とは、もっと頻繁に起こりえるものです。
355 たとえば <methodname>getTaxRateCanada()</methodname> で指定した
356 <code>province</code> が見つけられないときなどは例外とはなりません。
361 StrikeIron サービスのメソッドをコールする際には
362 常に返り値をチェックするようにしましょう。
367 <para><!-- included for whitespace --></para>
370 <sect2 id="zend.service.strikeiron.checking-subscription">
371 <title>購入内容の確認</title>
373 StrikeIron にはさまざまなサービスがあります。
374 その中には無料で使えるものもあればお試し版のものもあります。
376 StrikeIron を使用するにあたっては、
377 そのサービスの購入状況を常に確認することが必要です。
381 <code>getService</code> メソッドが返す StrikeIron クライアントにはすべて、
383 <methodname>getSubscriptionInfo()</methodname> メソッドが存在します。
385 <programlisting language="php"><![CDATA[
386 // Sales & Use Tax Basic サービス用のクライアントを取得します
387 $strikeIron = new Zend_Service_StrikeIron(array('username' => 'あなたのユーザ名',
388 'password' => 'あなたのパスワード'));
390 $taxBasic = $strikeIron->getService(array('class => 'SalesUseTaxBasic'));
392 // Sales & Use Tax Basic サービスをあと何回使用できるかを調べます
393 $subscription = $taxBasic->getSubscriptionInfo();
394 echo $subscription->remainingHits;
399 <methodname>getSubscriptionInfo()</methodname> メソッドが返すオブジェクトの多くには、
400 <code>remainingHits</code> プロパティが含まれます。
401 これを調べて、使用しているサービスの状態を確認します。
402 残りの使用回数を超える数のメソッドコールを行うと、
403 StrikeIron は例外をスローします。
407 サービスの購入状況を調べる問い合わせを送っても、
409 サービスのメソッドをコールする際にはいつも残りの回数を自動的に取得します。
411 <methodname>getSubscriptionInfo()</methodname> で取得できます。
412 キャッシュを使用せずにもう一度情報を問い合わせるよう
413 <methodname>getSubscriptionInfo()</methodname> に指示するには、
414 <methodname>getSubscriptionInfo(true)</methodname> とします。