Zend_Validate-Barcode.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 19692 -->
  3. <!-- Reviewed: no -->
  4. <sect2 id="zend.validate.set.barcode">
  5. <title>Barcode</title>
  6. <para>
  7. <classname>Zend_Validate_Barcode</classname> erlaubt es zu prüfen ob ein gegebener Wert als
  8. Barcode repräsentiert werden kann.
  9. </para>
  10. <para>
  11. <classname>Zend_Validate_Barcode</classname> unterstützt viele Barcode Standards und kann
  12. sehr einfach mit prorietären Barcode Implementationen erweitert werden. Die folgenden
  13. Barcode Standards werden unterstützt:
  14. </para>
  15. <itemizedlist>
  16. <listitem>
  17. <para>
  18. <emphasis>CODE25</emphasis>: Oft auch "Two of Five" genannt.
  19. </para>
  20. <para>
  21. Dieser Barcode hat keine Begrenzung der Länge, muss aber eine gerade Anzahl an
  22. Zeichen enthalten. Es unterstützt nur Ziffern, und die letzt Ziffer kann eine
  23. optionale Checksumme sein welche durch Modulo 10 berechnet wird. Dieser Standard
  24. wird weltweit verwendet und üblicherweise im Handel.
  25. </para>
  26. </listitem>
  27. <listitem>
  28. <para>
  29. <emphasis>CODE39</emphasis>: CODE39 ist einer der ältesten vorhandenen Codes.
  30. </para>
  31. <para>
  32. Dieser Barcode hat eine variable Länge. Er unterstützt Ziffern, alphabetische
  33. Zeichen und 7 spezielle Zeichen. Er kann eine optionale Checksumme enthalten welche
  34. durch Modulo 43 berechnet wird. Dieser Standard wird weltweit verwendet und
  35. üblicherweise in der Industrie.
  36. </para>
  37. </listitem>
  38. <listitem>
  39. <para>
  40. <emphasis>CODE93</emphasis>: CODE93 ist der Nachfolger von CODE39.
  41. </para>
  42. <para>
  43. Dieser Barcode hat eine variable Länge. Er unterstützt Ziffern, alphabetische
  44. Zeichen und 7 spezielle Zeichen. Er enthält eine Checksumme welche durch Modulo 47
  45. berechnet wird und aus 2 Zeichen besteht. Dieser Standard produziert einen
  46. kompakteren Code als CODE39 und ist sicherer.
  47. </para>
  48. </listitem>
  49. <listitem>
  50. <para>
  51. <emphasis>EAN8</emphasis>: EAN ist die Abkürzung für "European Article Number".
  52. </para>
  53. <para>
  54. Dieser Barcode muss eine Länge von 8 Zeichen haben. Er unterstützt nur Ziffern wobei
  55. die letzte Ziffer immer eine Checksumme ist. Dieser Standard wird weltweit
  56. verwendet, hat aber eine sehr begrenzte Reichweite. Er kann auf kleinen Artikeln
  57. gefunden werden wo ein längerer Barcode nicht gedruckt werden könnte.
  58. </para>
  59. </listitem>
  60. <listitem>
  61. <para>
  62. <emphasis>EAN12</emphasis>: EAN ist die Abkürzung für "European Article Number".
  63. </para>
  64. <para>
  65. Dieser Barcode muss eine Länge von 12 Zeichen haben. Er unterstützt nur Ziffern
  66. wobei die letzte Ziffer immer eine Checksumme ist welche durch Modulo 10 berechnet
  67. wird. Dieser Standard wird in der USA verwendet und hierbei üblicherweise im Handel.
  68. Er wurde ersetzt durch EAN13.
  69. </para>
  70. </listitem>
  71. <listitem>
  72. <para>
  73. <emphasis>EAN13</emphasis>: EAN ist die Abkürzung für "European Article Number".
  74. </para>
  75. <para>
  76. Dieser Barcode muss eine Länge von 13 Zeichen haben. Er unterstützt nur Ziffern
  77. wobei die letzte Ziffer immer eine Checksumme ist welche durch Modulo 10 berechnet
  78. wird. Dieser Standard wird weltweit verwendet, üblicherweise im Handel.
  79. </para>
  80. </listitem>
  81. <listitem>
  82. <para>
  83. <emphasis>EAN14</emphasis>: EAN ist die Abkürzung für "European Article Number".
  84. </para>
  85. <para>
  86. Dieser Barcode muss eine Länge von 14 Zeichen haben. Er unterstützt nur Ziffern
  87. wobei die letzte Ziffer immer eine Checksumme ist welche durch Modulo 10 berechnet
  88. wird. Dieser Standard wird weltweit verwendet, üblicherweise im Handel. Er ist der
  89. Nachfolger von EAN13.
  90. </para>
  91. </listitem>
  92. <listitem>
  93. <para>
  94. <emphasis>GTIN12</emphasis>: GTIN ist die Abkürzung für "Global Trade Item Number".
  95. </para>
  96. <para>
  97. Dieser Barcode verwendet den gleichen Standard wie EAN12 und ist sein Nachfolger.
  98. Er wird üblicherweise in den USA verwendet.
  99. </para>
  100. </listitem>
  101. <listitem>
  102. <para>
  103. <emphasis>GTIN13</emphasis>: GTIN ist die Abkürzung für "Global Trade Item Number".
  104. </para>
  105. <para>
  106. Dieser Barcode verwendet den gleichen Standard wie EAN13 und ist sein Nachfolger.
  107. Er wird weltweit von der Industrie verwendet.
  108. </para>
  109. </listitem>
  110. <listitem>
  111. <para>
  112. <emphasis>GTIN14</emphasis>: GTIN ist die Abkürzung für "Global Trade Item Number".
  113. </para>
  114. <para>
  115. Dieser Barcode verwendet den gleichen Standard wie EAN14 und ist sein Nachfolger.
  116. Er wird weltweit verwendet, üblicherweise im Handel.
  117. </para>
  118. </listitem>
  119. <listitem>
  120. <para>
  121. <emphasis>ITF14</emphasis>: ITF14 ist die GS1 Implementation des Interleaved Two of
  122. Five Barcodes.
  123. </para>
  124. <para>
  125. Dieser Barcode ist eine spezielle Variante von Interleaved 2 of 5. Er muss eine
  126. Länge von 14 Zeichen haben und basiert auf GTIN14. Er unterstützt nur Ziffern wobei
  127. die letzte Ziffer die Ziffer einer Checksumme ist welche durch Modulo 10 berechnet
  128. wird. Er wird weltweit verwendet, üblicherweise im Handel.
  129. </para>
  130. </listitem>
  131. <listitem>
  132. <para>
  133. <emphasis>SSCC</emphasis>: SSCC ist die Abkürzung für "Serial Shipping Container
  134. Code".
  135. </para>
  136. <para>
  137. Dieser Barcode ist eine Variante des EAN Barcodes. Er muss eine Länge von 18 Zeichen
  138. enthalten und unterstützt nur Ziffern. Die letzte Ziffer muss ein Ziffer für eine
  139. Checksumme sein welche durch Modulo 10 berechnet wird. Er wird üblicherweise in der
  140. Transport Industrie verwendet.
  141. </para>
  142. </listitem>
  143. <listitem>
  144. <para>
  145. <emphasis>UPCA</emphasis>: UPC ist die Abkürzung für "Univeral Product Code".
  146. </para>
  147. <para>
  148. Dieser Barcode ist der Vorgänger von EAN13. Er muss eine Länge von 12 Zeichen haben
  149. und unterstützt nur Ziffern. Die letzte Ziffer muss die Ziffer einer Checksumme sein
  150. welche durch Modulo 10 berechnet wird. Er wird üblicherweise in den USA verwendet.
  151. </para>
  152. </listitem>
  153. <listitem>
  154. <para>
  155. <emphasis>UPCE</emphasis>: UPCE ist die kurze Variante von UPCA.
  156. </para>
  157. <para>
  158. Dieser Barcode ist die kleinere Variante von UPCA. Er muss eine Länge von 6 Zeichen
  159. haben und unterstützt nur Ziffern. Es gibt keine Checksumme in diesem Barcode. Er
  160. wird üblicherweise bei kleinen Produkten verwendet wo ein UPCA Barcode nicht passen
  161. würde.
  162. </para>
  163. </listitem>
  164. </itemizedlist>
  165. <sect3 id="zend.validate.set.barcode.basic">
  166. <title>Grundsätzliche Verwendung</title>
  167. <para>
  168. Um zu prüfen ob ein angegebener String ein Barcode ist muss man nur dessen Typ wissen.
  169. Siehe das folgende Beispiel für einen EAN13 Barcode:
  170. </para>
  171. <programlisting language="php"><![CDATA[
  172. $valid = new Zend_Validate_Barcode('EAN13');
  173. if ($valid->isValid($input)) {
  174. // Die Eingabe scheint gültig zu sein
  175. } else {
  176. // Die Eingabe ist ungültig
  177. }
  178. ]]></programlisting>
  179. </sect3>
  180. <sect3 id="zend.validate.set.barcode.checksum">
  181. <title>Optionale Checksumme</title>
  182. <para>
  183. Einige Barcodes können mit einer optionalen Checksumme angegeben werden. Diese Barcodes
  184. würden gültig sein, selbst ohne Checksumme. Trotzdem, wenn eine Checksumme angegeben
  185. wird, dann sollte man Sie auch prüfen. Standardmäßig führen diese Barcode Typen keine
  186. Prüfung der Checksumme durch. Durch Verwendung der Option <property>checksum</property>
  187. kann man definieren ob die Checksumme geprüft oder ignoriert wird.
  188. </para>
  189. <programlisting language="php"><![CDATA[
  190. $valid = new Zend_Validate_Barcode(array(
  191. 'adapter' => 'EAN13',
  192. 'checksum' => false,
  193. ));
  194. if ($valid->isValid($input)) {
  195. // Die Eingabe scheint gültig zu sein
  196. } else {
  197. // Die Eingabe ist ungültig
  198. }
  199. ]]></programlisting>
  200. <note>
  201. <title>Reduzierte Sicherheit durch ausgeschaltete Prüfung der Checksumme</title>
  202. <para>
  203. Indem die Prüfung der Checksumme ausgeschaltet wird, verringert man auch die
  204. Sicherheit der verwendeten Barcodes. Zusätzlich sollte man beachten dass man
  205. die Prüfung der Checksumme für jene Barcode Typen ausschalten kann welche einen
  206. Wert für die Checksumme enthalten müssen. Barcodes welche nicht gültig wären
  207. könnten dann als gültig zurückgegeben werden, selbst wenn Sie es nicht sind.
  208. </para>
  209. </note>
  210. </sect3>
  211. <sect3 id="zend.validate.set.barcode.custom">
  212. <title>Schreiben eigener Adapter</title>
  213. <para>
  214. Man kann eigene Barcode Prüfungen für die Verwendung mit
  215. <classname>Zend_Validate_Barcode</classname> schreiben; das ist oft notwendig wenn man
  216. mit proprietären Barcodes arbeiten muss. Um eine eigene Barcode Prüfung zu schreiben
  217. benötigt man die folgenden Informationen.
  218. </para>
  219. <itemizedlist>
  220. <listitem>
  221. <para>
  222. <emphasis>Length</emphasis>: Die Länge welche der Barcode haben muss. Diese kann
  223. einen der folgenden Werte haben:
  224. </para>
  225. <itemizedlist>
  226. <listitem>
  227. <para>
  228. <emphasis>Integer</emphasis>: Ein Wert größer als 0, was bedeutet das
  229. der Barcode diese Länge haben muss.
  230. </para>
  231. </listitem>
  232. <listitem>
  233. <para>
  234. <emphasis>-1</emphasis>: Es gibt keine Begrenzung der Länge für diesen
  235. Barcode.
  236. </para>
  237. </listitem>
  238. <listitem>
  239. <para>
  240. <emphasis>"even"</emphasis>: Die Länge dieses Barcodes muss eine gerade
  241. Anzahl an Ziffern enthalten.
  242. </para>
  243. </listitem>
  244. <listitem>
  245. <para>
  246. <emphasis>"odd"</emphasis>: Die Länge dieses Barcodes muss eine ungerade
  247. Anzahl an Ziffern enthalten.
  248. </para>
  249. </listitem>
  250. <listitem>
  251. <para>
  252. <emphasis>array</emphasis>: Ein Array von Integer Werten. Die Länge
  253. dieses Barcodes muss einer der gesetzten Array Werte haben.
  254. </para>
  255. </listitem>
  256. </itemizedlist>
  257. </listitem>
  258. <listitem>
  259. <para>
  260. <emphasis>Characters</emphasis>: Ein String der die erlaubten Zeichen für diesen
  261. Barcode enthält. Auhc der Integer Wert 128 ist erlaubt, was für die ersten 128
  262. Zeichen der ASCII Tabelle steht.
  263. </para>
  264. </listitem>
  265. <listitem>
  266. <para>
  267. <emphasis>Checksum</emphasis>: Ein Strung der als Callback für eine Methode
  268. verwendet wird, welche die Prüfung der Checksumme durchführt.
  269. </para>
  270. </listitem>
  271. </itemizedlist>
  272. <para>
  273. Die eigene Barcode Prüfung muss
  274. <classname>Zend_Validate_Barcode_AdapterAbstract</classname> erweitern oder
  275. <interface>Zend_Validate_Barcode_AdapterInterface</interface> implementieren.
  276. </para>
  277. <para>
  278. Als Beispiel, erstellen wir eine Prüfung welche eine gerade Anzahl an Zeichen erwartet
  279. welche alle Ziffern und die Zeichen 'ABCDE' enthalten kann, und die eine Checksumme
  280. benötigt.
  281. </para>
  282. <programlisting language="php"><![CDATA[
  283. class My_Barcode_MyBar extends Zend_Validate_Barcode_AdapterAbstract
  284. {
  285. protected $_length = 'even';
  286. protected $_characters = '0123456789ABCDE';
  287. protected $_checksum = '_mod66';
  288. protected function _mod66($barcode)
  289. {
  290. // Mach einige Prüfungen und gib ein Boolean zurück
  291. }
  292. }
  293. $valid = new Zend_Validate_Barcode('My_Barcode_MyBar');
  294. if ($valid->isValid($input)) {
  295. // Die Eingabe scheint gültig zu sein
  296. } else {
  297. // Die Eingabe ist ungültig
  298. }
  299. ]]></programlisting>
  300. </sect3>
  301. </sect2>
  302. <!--
  303. vim:se ts=4 sw=4 et:
  304. -->