Zend_Service_StrikeIron-Overview.xml 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.service.strikeiron">
  5. <title>Zend_Service_StrikeIron</title>
  6. <para>
  7. <classname>Zend_Service_StrikeIron</classname> bietet einen <acronym>PHP</acronym> 5
  8. Clienten zu den Web Services von StrikeIron. Siehe die folgenden Sektionen:
  9. </para>
  10. <para>
  11. <itemizedlist>
  12. <listitem>
  13. <para><link linkend="zend.service.strikeiron">Zend_Service_StrikeIron</link></para>
  14. </listitem>
  15. </itemizedlist>
  16. <itemizedlist>
  17. <listitem>
  18. <para>
  19. <link linkend="zend.service.strikeiron.bundled-services">Gebündelte
  20. Services</link>
  21. </para>
  22. </listitem>
  23. </itemizedlist>
  24. <itemizedlist>
  25. <listitem>
  26. <para>
  27. <link linkend="zend.service.strikeiron.advanced-uses">Fortgeschrittene
  28. Benutzung</link>
  29. </para>
  30. </listitem>
  31. </itemizedlist>
  32. </para>
  33. <sect2 id="zend.service.strikeiron.overview">
  34. <title>Übersicht</title>
  35. <para>
  36. <ulink url="http://www.strikeiron.com">StrikeIron</ulink> bietet hunderte von
  37. kommerziellen Daten Services ("Daten als Service") wie z.B. Online Steuer, Wärungsraten,
  38. Aktienwerte, Geocodes, Globale Adresen Prüfung, Yallow/White Pages, MapQuest
  39. Fahranleitungen, Dun &amp; Bradstreet Business Credit Prüfungen, und viele, viele mehr.
  40. </para>
  41. <para>
  42. Jedes StrikeIron Web Service bietet eine standard <acronym>SOAP</acronym> (und REST)
  43. <acronym>API</acronym>, welche die Integration und Handhabung mehrerer Services sehr
  44. einfach macht. StrikeIron managt auch die Kundenverrechnung für alle Services in einem
  45. einzelnen Account, was es für Lösungsanbieter perfekt macht. Man kann mit freien
  46. WebServices unter <ulink
  47. url="http://www.strikeiron.com/sdp">http://www.strikeiron.com/sdp</ulink> starten.
  48. </para>
  49. <para>
  50. Die Services von StrikeIron können schon alleine durch die
  51. <ulink url="http://us.php.net/soap">PHP 5 <acronym>SOAP</acronym> Erweiterung</ulink>
  52. verwendet werden. Trotzdem bietet die Verwendung von StrikeIron auf diesem Weg kein
  53. ideales <acronym>PHP</acronym>-artiges Interface. Die
  54. <classname>Zend_Service_StrikeIron</classname> Componente bietet einen leichtgewichtigen
  55. Layer aufbauend auf der <acronym>SOAP</acronym> Erweiterung für die Arbeit mit den
  56. Services von StrikeIron auf einem bequemeren und <acronym>PHP</acronym>-artigeren Weg.
  57. </para>
  58. <note>
  59. <para>
  60. Die <acronym>PHP</acronym> 5 <acronym>SOAP</acronym> Erweiterung muß installiert und
  61. aktiviert sein um <classname>Zend_Service_StrikeIron</classname> zu verwenden.
  62. </para>
  63. </note>
  64. <para>
  65. Die <classname>Zend_Service_StrikeIron</classname> Komponente bietet:
  66. <itemizedlist>
  67. <listitem>
  68. <para>
  69. Einen einzigen Punkt für die Konfiguration der eigenen
  70. Authentifizierungsdaten für StrikeIron die durch alle StrikeIron Services
  71. hinweg verwendet werden können.
  72. </para>
  73. </listitem>
  74. <listitem>
  75. <para>
  76. Einen standardtisierten Weg um die eigenen StrikeIron Einwahl Informationen
  77. wie den Lizenz Status und die Anzahl von verbleibenden Hits zu einem Service
  78. zu erhalten.
  79. </para>
  80. </listitem>
  81. <listitem>
  82. <para>
  83. Die Möglichkeit jedes StrikeIron Service von deren WSDL aus zu verwenden
  84. ohne eine <acronym>PHP</acronym> Wrapper Klasse zu erstellen, und die Option
  85. einen Wrapper für ein bequemeres Interface zu erstellen.
  86. </para>
  87. </listitem>
  88. <listitem>
  89. <para>
  90. Wrapper für drei populäre StrikeIron Services.
  91. </para>
  92. </listitem>
  93. </itemizedlist>
  94. </para>
  95. </sect2>
  96. <sect2 id="zend.service.strikeiron.registering">
  97. <title>Registrieren mit StrikeIron</title>
  98. <para>
  99. Bevor man mit <classname>Zend_Service_StrikeIron</classname> beginnen kann, muß man sich
  100. zuerst für einen StrikeIron Entwickler Zugang <ulink
  101. url="http://strikeiron.com/Register.aspx">registrieren</ulink>.
  102. </para>
  103. <para>
  104. Nach der Registrierung erhält man einen StrikeIron Benutzernamen und ein Passwort. Diese
  105. werden Verwendet wenn man sich auf StrikeIron verbindet indem man
  106. <classname>Zend_Service_StrikeIron</classname> verwendet.
  107. </para>
  108. <para>
  109. Man muß sich auch für StrikeIron's Super Data Pack Web Service
  110. <ulink url="http://www.strikeiron.com/ProductDetail.aspx?p=257">anmelden</ulink>.
  111. </para>
  112. <para>
  113. Beide Schritte der Registrierung sind frei und können relativ schnell mit der WebSeite
  114. von StrikeIron durchgeführt werden.
  115. </para>
  116. </sect2>
  117. <sect2 id="zend.service.strikeiron.getting-started">
  118. <title>Beginnen</title>
  119. <para>
  120. Sobald man sich für einen StrikeIron Account
  121. <ulink url="http://strikeiron.com/Register.aspx">registriert</ulink> und für das <ulink
  122. url="http://www.strikeiron.com/ProductDetail.aspx?p=257">Super Data Pack</ulink>
  123. angemeldet hat, ist man für die Benutzung von
  124. <classname>Zend_Service_StrikeIron</classname> bereit.
  125. </para>
  126. <para>
  127. StrikeIron besteht aus hunderten von verschiedenen WebServices.
  128. <classname>Zend_Service_StrikeIron</classname> kann mit vielen dieser Services verwendet
  129. werden bietet aber nur für drei von Ihnen unterstützte Wrapper:
  130. </para>
  131. <itemizedlist>
  132. <listitem>
  133. <para>
  134. <link
  135. linkend="zend.service.strikeiron.bundled-services.zip-code-information">ZIP
  136. Code Informationen</link>
  137. </para>
  138. </listitem>
  139. <listitem>
  140. <para>
  141. <link
  142. linkend="zend.service.strikeiron.bundled-services.us-address-verification">US
  143. Addressen Prüfung</link>
  144. </para>
  145. </listitem>
  146. <listitem>
  147. <para>
  148. <link
  149. linkend="zend.service.strikeiron.bundled-services.sales-use-tax-basic">Verkaufs-
  150. &amp; Steuergrundlagen</link>
  151. </para>
  152. </listitem>
  153. </itemizedlist>
  154. <para>
  155. Die Klasse <classname>Zend_Service_StrikeIron</classname> bietet einen einfachen Web um
  156. die eigenen Account Informationen von StrikeIron und andere Option im Konstruktor zu
  157. spezifizieren. Sie bietet auch eine Factory Methode die Clients für StrikeIron Services
  158. zurück gibt:
  159. </para>
  160. <programlisting language="php"><![CDATA[
  161. $strikeIron = new Zend_Service_StrikeIron(array('username' => 'your-username',
  162. 'password' => 'your-password'));
  163. $taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));
  164. ]]></programlisting>
  165. <para>
  166. Die <methodname>getService()</methodname> Methode gibt einen Client für irgendein
  167. StrikeIron Service zurück das durch den Namen seiner <acronym>PHP</acronym> Wrapper
  168. Klasse definiert wurde. In diesem Fall, referiert der Name 'SalesUseTaxBasic'
  169. zu der Wrapper Klasse <classname>Zend_Service_StrikeIron_SalesUseTaxBasic</classname>.
  170. Wrapper sind für drei Services inkludiert und in <link
  171. linkend="zend.service.strikeiron.bundled-services">Bundled Services</link>
  172. beschrieben.
  173. </para>
  174. <para>
  175. Die <methodname>getService()</methodname> Methode kann auch einen Client für ein
  176. StrikeIron Service zurückgeben das bisher keinen <acronym>PHP</acronym> Wrapper hat. Das
  177. wird in <link linkend="zend.service.strikeiron.advanced-uses.services-by-wsdl">Services
  178. durch WSDL verwenden</link> erklärt.
  179. </para>
  180. </sect2>
  181. <sect2 id="zend.service.strikeiron.making-first-query">
  182. <title>Die erste Abfrage durchführen</title>
  183. <para>
  184. Sobald die <methodname>getService()</methodname> Methode verwendet wurde um einen
  185. Clienten für ein gewünschtes StrikeIron Service zu erhalten, kann dieser Client
  186. verwendet werden durch Aufruf seiner Methoden ganz wie jedes andere
  187. <acronym>PHP</acronym> Objekt.
  188. </para>
  189. <programlisting language="php"><![CDATA[
  190. $strikeIron = new Zend_Service_StrikeIron(array('username' => 'your-username',
  191. 'password' => 'your-password'));
  192. // Einen Client für das Verkaufs / Steuerbasis Service erhalten
  193. $taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));
  194. // Steuerrate für Ontario, Canada abfragen
  195. $rateInfo = $taxBasic->getTaxRateCanada(array('province' => 'ontario'));
  196. echo $rateInfo->province;
  197. echo $rateInfo->abbreviation;
  198. echo $rateInfo->GST;
  199. ]]></programlisting>
  200. <para>
  201. Im obigen Beispiel wird die <methodname>getService()</methodname> Methode verwendet um
  202. einen Client zum <link
  203. linkend="zend.service.strikeiron.bundled-services.sales-use-tax-basic">Verkaufs-
  204. &amp; Steuergrundlagen</link> Service zu erhalten. Das Client Objekt wird in
  205. <varname>$taxBasic</varname> gespeichert.
  206. </para>
  207. <para>
  208. Die <methodname>getTaxRateCanada()</methodname> Methode wird dann vom Service aus
  209. aufgerufen. Ein assoziatives Array wird verwendet um der Methode Schlüssel Parameter
  210. anzugeben. Das ist der Weg auf dem alle StrikeIron Methoden aufgerufen werden.
  211. </para>
  212. <para>
  213. Das Ergebnis von <methodname>getTaxRateCanada()</methodname> wird in
  214. <varname>$rateInfo</varname> gespeichert und hat Eigenschaften wie
  215. <property>province</property> und <constant>GST</constant>.
  216. </para>
  217. <para>
  218. Viele der Services von StrikeIron sind so einfach wie das obige Beispiel. Siehe
  219. <link linkend="zend.service.strikeiron.bundled-services">mitgelieferte Services</link>
  220. für detailierte Informationen zu drei der Services von StrikeIron.
  221. </para>
  222. </sect2>
  223. <sect2 id="zend.service.strikeiron.examining-results">
  224. <title>Ergebnisse betrachten</title>
  225. <para>
  226. Wenn man Services von StrikeIron lernt oder versucht fehler zu beheben, ist es oft
  227. nützlich das Ergebnis das von einem Methodenaufruf zurückgegeben wird auszugeben. Das
  228. Ergebnis wird immer ien Objekt sein das eine Instanz von
  229. <classname>Zend_Service_StrikeIron_Decorator</classname> ist. Das ist ein kleines <ulink
  230. url="http://en.wikipedia.org/wiki/Decorator_pattern">Dekorator</ulink> Objekt das
  231. die Ergebnisse des Methoden Aufrufs ummantelt.
  232. </para>
  233. <para>
  234. Der einfachste Weg ein Ergebnis vom Service zu betrachten ist die Verwendung der
  235. eingebauten <acronym>PHP</acronym> Methode <ulink
  236. url="http://www.php.net/print_r">print_r()</ulink>:
  237. </para>
  238. <programlisting language="php"><![CDATA[
  239. $strikeIron = new Zend_Service_StrikeIron(array('username' => 'your-username',
  240. 'password' => 'your-password'));
  241. $taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));
  242. $rateInfo = $taxBasic->getTaxRateCanada(array('province' => 'ontario'));
  243. print_r($rateInfo);
  244. ?>
  245. Zend_Service_StrikeIron_Decorator Object
  246. (
  247. [_name:protected] => GetTaxRateCanadaResult
  248. [_object:protected] => stdClass Object
  249. (
  250. [abbreviation] => ON
  251. [province] => ONTARIO
  252. [GST] => 0.06
  253. [PST] => 0.08
  254. [total] => 0.14
  255. [HST] => Y
  256. )
  257. )
  258. ]]></programlisting>
  259. <para>
  260. In der obigen Ausgabe sehen wir das der Dekorator (<varname>$rateInfo</varname>) ein
  261. Objekt ummantelt das <classname>GetTaxRateCanadaResult</classname> heißt, und das
  262. Ergebnis des Aufrufes von <methodname>getTaxRateCanada()</methodname> ist.
  263. </para>
  264. <para>
  265. Das bedeutet das <varname>$rateInfo</varname> öffentliche Eigenschaften wie
  266. <property>abbreviation</property>, <property>province</property>, und
  267. <constant>GST</constant> hat. Dieser werden z.B. mit
  268. <command>$rateInfo->province</command> aufgerufen.
  269. </para>
  270. <tip>
  271. <para>
  272. Die Eigenschaften von StrikeIron Ergebnissen beginnen oft mit einem Großbuchstaben
  273. wie <property>Foo</property> oder <property>Bar</property> wobei die meisten
  274. <acronym>PHP</acronym> Objekt Eigenschaften normalerweise mit einem Kleinbuchstaben
  275. wie <property>foo</property> oder <property>bar</property> beginnen. Der Dekorator
  276. wird diesen Eingriff automatisch durchführen sodas eine Eigenschaft von
  277. <property>Foo</property> als <property>foo</property> gelesen werden kann.
  278. </para>
  279. </tip>
  280. <para>
  281. Wenn man jemals das originale Objekt oder seinen Namen vom Dekorator heraus benötigt
  282. können die Methoden <methodname>getDecoratedObject()</methodname> und
  283. <methodname>getDecoratedObjectName()</methodname> verwendet werden.
  284. </para>
  285. </sect2>
  286. <sect2 id="zend.service.strikeiron.handling-errors">
  287. <title>Fehler handhaben</title>
  288. <para>
  289. Die vorigen Beispiel sind naiv, was bedeutet das keine Handhabung von Fehlern gezeigt
  290. wurde. Es ist möglich das StrikeIron einen Fehler zurückgibt während des Aufrufs einer
  291. Methode. Selbst fehlerhafte Account Daten oder ein abgelaufener Zugang kann StrikeIron
  292. dazu bringen einen Fehler zu werfen.
  293. </para>
  294. <para>
  295. Eine Ausnahme wird geworfen wenn solch ein Fehler auftritt. Man sollte das
  296. berücksichtigen und solche Ausnahmen fangen wenn man Methodenaufrufe zu einem Service
  297. durchführt:
  298. </para>
  299. <programlisting language="php"><![CDATA[
  300. $strikeIron = new Zend_Service_StrikeIron(array('username' => 'your-username',
  301. 'password' => 'your-password'));
  302. $taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));
  303. try {
  304. $taxBasic->getTaxRateCanada(array('province' => 'ontario'));
  305. } catch (Zend_Service_StrikeIron_Exception $e) {
  306. // Fehler handhaben für Events wie Verbindungsprobleme oder Account Probleme
  307. }
  308. ]]></programlisting>
  309. <para>
  310. Die geworfenen Ausnahmen werden immer
  311. <classname>Zend_Service_StrikeIron_Exception</classname> sein.
  312. </para>
  313. <para>
  314. Es ist wichtig die Unterschiede zwischen Ausnahmen und normalen fehlgeschlagenen
  315. Methodenaufrufen zu verstehen. Ausnahmen treten für <emphasis>ausgenommene</emphasis>
  316. Verhaltenweisen auf, wie z.B. ein Netzwerk das abstürzt oder ein abgelaufener Account.
  317. Fehlgeschlagene Methodenaufrufe die häufig auftreten, wie z.B. wenn
  318. <methodname>getTaxRateCanada()</methodname> die angegebene <property>province</property>
  319. nicht findet, führen nicht dazu das Ausnahmen geworfen werden.
  320. </para>
  321. <note>
  322. <para>
  323. Jedesmal wenn ein Methodenaufruf zu einem Service von StrikeIron durchgeführt wird,
  324. sollte das Ergebnis Objekt auf Gültigkeit geprüft werden und man sollte genauso
  325. vorsehen eine Ausnahme zu fangen.
  326. </para>
  327. </note>
  328. <para><!-- inkludiert für Leerzeichen --></para>
  329. </sect2>
  330. <sect2 id="zend.service.strikeiron.checking-subscription">
  331. <title>Den eigenen Account prüfen</title>
  332. <para>
  333. StrikeIron bietet viele verschiedene Services. Einige von Ihnen sind kostenlos, eine
  334. sind auf einer Testbasis vorhanden, und einige sind nur für zahlende Kunden. Wenn
  335. StrikeIron verwendet wird, ist es wichtig auf den Account Status für die Services zu
  336. achten die man verwendet und diesen regelmäßig zu prüfen.
  337. </para>
  338. <para>
  339. Jeder StrikeIron Client, der von der <methodname>getService()</methodname> Methode
  340. zurückgegeben wird, hat die Möglichkeit den Account Status für diesen Service zu prüfen
  341. indem die <methodname>getSubscriptionInfo()</methodname> Methode dieses Clients
  342. verwendet wird:
  343. </para>
  344. <programlisting language="php"><![CDATA[
  345. // Einen Client für das Verkaufs / Steuerbasis Service erhalten
  346. $strikeIron = new Zend_Service_StrikeIron(array('username' => 'your-username',
  347. 'password' => 'your-password'));
  348. $taxBasic = $strikeIron->getService(array('class => 'SalesUseTaxBasic'));
  349. // Prüfe die noch möglichen Zugriffe für das Verkaufs- & Steuerbasis Service
  350. $subscription = $taxBasic->getSubscriptionInfo();
  351. echo $subscription->remainingHits;
  352. ]]></programlisting>
  353. <para>
  354. Die <methodname>getSubscriptionInfo()</methodname> Methode gibt ein Objekt zurück, das
  355. typischerweise eine <property>remainingHits</property> Eigenschaft hat. Es ist wichtig
  356. den Status, für jeden Service der verwendet wird, zu prüfen. Wenn ein Methodenaufruf zu
  357. StrikeIron gemacht wird, nachdem die möglichen Zugriffe aufgebraucht wurden, wird eine
  358. Ausnahme auftreten.
  359. </para>
  360. <para>
  361. Das Prüfen des Accounts zu einem Service benötigt keinen Zugriff (hit) auf diesen
  362. Server. Jedes Mal wenn irgendein Methodenaufruf zu einem Service gemacht wurde, wird die
  363. Anzahl der möglichen Zugriffe gecached und dieser gecachete Wert wird durch
  364. <methodname>getSubscriptionInfo()</methodname> zurückgegeben ohne das noch einmal mit
  365. dem Service eine Verbindung aufgebaut werden muß. Um
  366. <methodname>getSubscriptionInfo()</methodname> dazu zu bringen seinen Cache
  367. auszuschalten und die Account Informationen nochmals abzufragen, kann
  368. <methodname>getSubscriptionInfo(true)</methodname> verwendet werden.
  369. </para>
  370. </sect2>
  371. </sect1>