Zend_Service_StrikeIron-Overview.xml 19 KB

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