Zend_Validate-Barcode.xml 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 24249 -->
  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" oder "Code 25 Industrial"
  19. genannt.
  20. </para>
  21. <para>
  22. Dieser Barcode hat keine Begrenzung der Länge. Es unterstützt nur Ziffern, und die
  23. letzte Ziffer kann eine optionale Checksumme sein welche durch Modulo 10 berechnet
  24. wird. Dieser Standard sehr alt und wird heutzutage nicht oft verwendet. Übliche
  25. Anwendungsfälle liegen in der Industrie.
  26. </para>
  27. </listitem>
  28. <listitem>
  29. <para>
  30. <emphasis>CODE25INTERLEAVED</emphasis>: Oft auch "Code 2 of 5 Interleaved" genannt.
  31. </para>
  32. <para>
  33. Dieser Standard ist eine Variante von CODE25. Er hat keine Begrenzung der Länge,
  34. muss aber eine gerade Anzahl an Zeichen enthalten. Es unterstützt nur Ziffern, und
  35. die letzte Ziffer kann eine optionale Checksumme sein welche durch Modulo 10
  36. berechnet wird. Dieser Standard wird weltweit verwendet und üblicherweise im Handel.
  37. </para>
  38. </listitem>
  39. <listitem>
  40. <para>
  41. <emphasis>CODE39</emphasis>: CODE39 ist einer der ältesten vorhandenen Codes.
  42. </para>
  43. <para>
  44. Dieser Barcode hat eine variable Länge. Er unterstützt Ziffern, großgeschriebene
  45. alphabetische Zeichen und 7 spezielle Zeichen wie Leerzeichen, Punkte und
  46. Dollarzeichen. Er kann eine optionale Checksumme enthalten welche durch Modulo 43
  47. berechnet wird. Dieser Standard wird weltweit verwendet und üblicherweise in der
  48. Industrie.
  49. </para>
  50. </listitem>
  51. <listitem>
  52. <para>
  53. <emphasis>CODE39EXT</emphasis>: CODE39EXT ist eine Erweiterung von CODE39.
  54. </para>
  55. <para>
  56. Dieser Barcode hat die gleichen Eigenschaften wie CODE39. Zusätzlich erlaubt er die
  57. Verwendung aller 128 ASCII Zeichen. Dieser Standard wird weltweit verwendet und
  58. ist in der Industrie üblich.
  59. </para>
  60. </listitem>
  61. <listitem>
  62. <para>
  63. <emphasis>CODE93</emphasis>: CODE93 ist der Nachfolger von CODE39.
  64. </para>
  65. <para>
  66. Dieser Barcode hat eine variable Länge. Er unterstützt Ziffern, alphabetische
  67. Zeichen und 7 spezielle Zeichen. Er enthält eine optionale Checksumme welche durch
  68. Modulo 47 berechnet wird und aus 2 Zeichen besteht. Dieser Standard produziert einen
  69. kompakteren Code als CODE39 und ist sicherer.
  70. </para>
  71. </listitem>
  72. <listitem>
  73. <para>
  74. <emphasis>CODE93EXT</emphasis>: CODE93EXT ist eine Erweiterung von CODE93.
  75. </para>
  76. <para>
  77. Dieser Barcode hat die gleichen Eigenschaften wie CODE93. Zusätzlich erlaubt er die
  78. Verwendung aller 128 ASCII Zeichen. Dieser Standard wird weltweit verwendung und ist
  79. in der Industrie üblich.
  80. </para>
  81. </listitem>
  82. <listitem>
  83. <para>
  84. <emphasis>EAN2</emphasis>: EAN ist die Abkürzung für "European Article Number".
  85. </para>
  86. <para>
  87. Dieser Barcode muss 2 Zeichen haben. Er unterstützt nur Ziffern und hat keine
  88. Checksumme. Dieser Standard wird hauptsächlich als Zusatz zu EAN13 (ISBN) verwendet
  89. wenn diese auf Bücher gedruckt werden.
  90. </para>
  91. </listitem>
  92. <listitem>
  93. <para>
  94. <emphasis>EAN5</emphasis>: EAN ist die Abkürzung für "European Article Number".
  95. </para>
  96. <para>
  97. Dieser Barcode muss 5 Zeichen haben. Er unterstützt nur Ziffern und hat keine
  98. Checksumme. Dieser Standard wird hauptsächlich als Zusatz zu EAN13 (ISBN) verwendet
  99. wenn diese auf Bücher gedruckt werden.
  100. </para>
  101. </listitem>
  102. <listitem>
  103. <para>
  104. <emphasis>EAN8</emphasis>: EAN ist die Abkürzung für "European Article Number".
  105. </para>
  106. <para>
  107. Dieser Barcode kann eine Länge von 7 oder 8 Zeichen haben. Er unterstützt nur
  108. Ziffern. Wenn er 8 Zeichen lang ist enthält er eine Checksumme. Dieser Standard wird
  109. weltweit verwendet, hat aber eine sehr begrenzte Reichweite. Er kann auf kleinen
  110. Artikeln gefunden werden wo ein längerer Barcode nicht gedruckt werden könnte.
  111. </para>
  112. </listitem>
  113. <listitem>
  114. <para>
  115. <emphasis>EAN12</emphasis>: EAN ist die Abkürzung für "European Article Number".
  116. </para>
  117. <para>
  118. Dieser Barcode muss eine Länge von 12 Zeichen haben. Er unterstützt nur Ziffern
  119. wobei die letzte Ziffer immer eine Checksumme ist welche durch Modulo 10 berechnet
  120. wird. Dieser Standard wird in der USA verwendet und hierbei üblicherweise im Handel.
  121. Er wurde ersetzt durch EAN13.
  122. </para>
  123. </listitem>
  124. <listitem>
  125. <para>
  126. <emphasis>EAN13</emphasis>: EAN ist die Abkürzung für "European Article Number".
  127. </para>
  128. <para>
  129. Dieser Barcode muss eine Länge von 13 Zeichen haben. Er unterstützt nur Ziffern
  130. wobei die letzte Ziffer immer eine Checksumme ist welche durch Modulo 10 berechnet
  131. wird. Dieser Standard wird weltweit verwendet, üblicherweise im Handel.
  132. </para>
  133. </listitem>
  134. <listitem>
  135. <para>
  136. <emphasis>EAN14</emphasis>: EAN ist die Abkürzung für "European Article Number".
  137. </para>
  138. <para>
  139. Dieser Barcode muss eine Länge von 14 Zeichen haben. Er unterstützt nur Ziffern
  140. wobei die letzte Ziffer immer eine Checksumme ist welche durch Modulo 10 berechnet
  141. wird. Dieser Standard wird weltweit verwendet, üblicherweise im Handel. Er ist der
  142. Nachfolger von EAN13.
  143. </para>
  144. </listitem>
  145. <listitem>
  146. <para>
  147. <emphasis>EAN18</emphasis>: EAN ist die Abkürzung für "European Article Number".
  148. </para>
  149. <para>
  150. Dieser Barcode muss eine Länge von 18 Zeichen haben. Er unterstützt nur Ziffern.
  151. Die letzte Ziffer ist immer eine Checksumme welche durch Modulo 10 berechnet wird.
  152. Dieser Code wird ost für die Identifizierung von Transport Containern verwendet.
  153. </para>
  154. </listitem>
  155. <listitem>
  156. <para>
  157. <emphasis>GTIN12</emphasis>: GTIN ist die Abkürzung für "Global Trade Item Number".
  158. </para>
  159. <para>
  160. Dieser Barcode verwendet den gleichen Standard wie EAN12 und ist sein Nachfolger.
  161. Er wird üblicherweise in den USA verwendet.
  162. </para>
  163. </listitem>
  164. <listitem>
  165. <para>
  166. <emphasis>GTIN13</emphasis>: GTIN ist die Abkürzung für "Global Trade Item Number".
  167. </para>
  168. <para>
  169. Dieser Barcode verwendet den gleichen Standard wie EAN13 und ist sein Nachfolger.
  170. Er wird weltweit von der Industrie verwendet.
  171. </para>
  172. </listitem>
  173. <listitem>
  174. <para>
  175. <emphasis>GTIN14</emphasis>: GTIN ist die Abkürzung für "Global Trade Item Number".
  176. </para>
  177. <para>
  178. Dieser Barcode verwendet den gleichen Standard wie EAN14 und ist sein Nachfolger.
  179. Er wird weltweit verwendet, üblicherweise im Handel.
  180. </para>
  181. </listitem>
  182. <listitem>
  183. <para>
  184. <emphasis>IDENTCODE</emphasis>: Identcode wird von Deutsche Post und DHL verwendet.
  185. Es ist eine spezialisierte Implementation von Code25.
  186. </para>
  187. <para>
  188. Dieser Barcode muss eine Länge von 12 Zeichen haben. Er unterstützt nur Ziffern und
  189. die letzte Ziffer ist immer eine Checksumme die mit Modulo 10 berechnet wird. Dieser
  190. Standard wird hauptsächlich von den Firmen DP und DHL verwendet.
  191. </para>
  192. </listitem>
  193. <listitem>
  194. <para>
  195. <emphasis>INTELLIGENTMAIL</emphasis>: Intelligent Mail ist ein postalischer Barcode.
  196. </para>
  197. <para>
  198. Dieser Barcode kann eine Länge von 20, 25, 29 oder 31 Zeichen haben. Er unterstützt
  199. nur Ziffern und enthält keine Checksumme. Dieser Standard ist der Nachfolger von
  200. <acronym>PLANET</acronym> und <acronym>POSTNET</acronym>. Er wird hauptsächlich von
  201. den United States Post Services verwendet.
  202. </para>
  203. </listitem>
  204. <listitem>
  205. <para>
  206. <emphasis>ISSN</emphasis>: <acronym>ISSN</acronym> ist die Abkürzung für
  207. International Standard Serial Number.
  208. </para>
  209. <para>
  210. Dieser Barcode kann eine Länge von 8 oder 13 Zeichen haben. Er unterstützt nur
  211. Ziffern wobei die letzte Ziffer eine Checksumme ist welche durch Modulo 11
  212. berechnet wird. Er wird weltweit für gedruckte Publikationen verwendet.
  213. </para>
  214. </listitem>
  215. <listitem>
  216. <para>
  217. <emphasis>ITF14</emphasis>: ITF14 ist die GS1 Implementation des Interleaved Two of
  218. Five Barcodes.
  219. </para>
  220. <para>
  221. Dieser Barcode ist eine spezielle Variante von Interleaved 2 of 5. Er muss eine
  222. Länge von 14 Zeichen haben und basiert auf GTIN14. Er unterstützt nur Ziffern wobei
  223. die letzte Ziffer die Ziffer einer Checksumme ist welche durch Modulo 10 berechnet
  224. wird. Er wird weltweit verwendet, üblicherweise im Handel.
  225. </para>
  226. </listitem>
  227. <listitem>
  228. <para>
  229. <emphasis>LEITCODE</emphasis>: Leitcode wird von Deutsche Post und DHL verwendet.
  230. Er ist eine spezialisierte Implementation von Code25.
  231. </para>
  232. <para>
  233. Dieser Barcode muss eine Länge von 14 Zeichen haben. Er unterstützt nur Ziffern,
  234. wobei die letzte Ziffer immer eine Checksumme ist welche durch Modulo 10 berechnet
  235. wird. Dieser Standard wird hauptsächlich von den Firmen DP und DHL verwendet.
  236. </para>
  237. </listitem>
  238. <listitem>
  239. <para>
  240. <emphasis>PLANET</emphasis>: Planet ist die Abkürzung für Postal Alpha Numeric
  241. Encoding Technique.
  242. </para>
  243. <para>
  244. Dieser Barcode kann eine Länge von 12 oder 14 Zeichen haben. Er unterstützt nur
  245. Ziffern wobei die letzt Ziffer immer eine Checksumme ist. Dieser Standard wird
  246. hauptsächlich von den United States Post Services verwendet.
  247. </para>
  248. </listitem>
  249. <listitem>
  250. <para>
  251. <emphasis>POSTNET</emphasis>: Postnet wird vom US Post Service verwendet.
  252. </para>
  253. <para>
  254. Dieser Barcode kann eine Länge von 6, 7, 10 oder 12 Zeichen haben. Er unterstützt
  255. nur Ziffern wobei die letzte Ziffer immer eine Checksumme ist. Dieser Standard wird
  256. hauptsächlich von den United States Post Services verwendet.
  257. </para>
  258. </listitem>
  259. <listitem>
  260. <para>
  261. <emphasis>ROYALMAIL</emphasis>: Royalmail wird von Royal Mail verwendet.
  262. </para>
  263. <para>
  264. Dieser Barcode hat keine definierte Länge. Er unterstützt Ziffern, großgeschriebene
  265. Buchstaben und die letzte Ziffer ist immer eine Checksumme. Dieser Standard wird
  266. hauptsächlich von Royal Mail für deren Cleanmail Service verwendet. Er wird auch
  267. <acronym>RM4SCC</acronym> genannt.
  268. </para>
  269. </listitem>
  270. <listitem>
  271. <para>
  272. <emphasis>SSCC</emphasis>: SSCC ist die Abkürzung für "Serial Shipping Container
  273. Code".
  274. </para>
  275. <para>
  276. Dieser Barcode ist eine Variante des EAN Barcodes. Er muss eine Länge von 18 Zeichen
  277. enthalten und unterstützt nur Ziffern. Die letzte Ziffer muss ein Ziffer für eine
  278. Checksumme sein welche durch Modulo 10 berechnet wird. Er wird üblicherweise in der
  279. Transport Industrie verwendet.
  280. </para>
  281. </listitem>
  282. <listitem>
  283. <para>
  284. <emphasis>UPCA</emphasis>: UPC ist die Abkürzung für "Univeral Product Code".
  285. </para>
  286. <para>
  287. Dieser Barcode ist der Vorgänger von EAN13. Er muss eine Länge von 12 Zeichen haben
  288. und unterstützt nur Ziffern. Die letzte Ziffer muss die Ziffer einer Checksumme sein
  289. welche durch Modulo 10 berechnet wird. Er wird üblicherweise in den USA verwendet.
  290. </para>
  291. </listitem>
  292. <listitem>
  293. <para>
  294. <emphasis>UPCE</emphasis>: UPCE ist die kurze Variante von UPCA.
  295. </para>
  296. <para>
  297. Dieser Barcode ist die kleinere Variante von UPCA. Er muss eine Länge von 6, 7 oder
  298. 8 Zeichen haben und unterstützt nur Ziffern. Wenn der Barcode 8 Ziffern lang ist
  299. enthält er eine Checksumme die durch Modulo 10 berechnet wird. Er wird üblicherweise
  300. bei kleinen Produkten verwendet wo ein UPCA Barcode nicht passen würde.
  301. </para>
  302. </listitem>
  303. </itemizedlist>
  304. <sect3 id="zend.validate.set.barcode.options">
  305. <title>Unterstützte Optionen für Zend_Validate_Barcode</title>
  306. <para>
  307. Die folgenden Optionen werden für <classname>Zend_Validate_Barcode</classname>
  308. unterstützt:
  309. </para>
  310. <itemizedlist>
  311. <listitem>
  312. <para>
  313. <emphasis><property>adapter</property></emphasis>: Setzt den Barcode Adapter
  314. welcher verwendet wird. Unterstützt werden alle vorher genannten Adapter. Wenn
  315. ein selbst definierter Adapter verwendet werden soll, muss man den kompletten
  316. Klassennamen setzen.
  317. </para>
  318. </listitem>
  319. <listitem>
  320. <para>
  321. <emphasis><property>checksum</property></emphasis>: <constant>TRUE</constant>
  322. wenn der Barcode eine Prüfsumme enthalten soll. Der Standardwert hängt vom
  323. verwendeten Adapter ab. Es ist zu beachten das einige Adapter es nicht erlauben
  324. diese Option zu setzen.
  325. </para>
  326. </listitem>
  327. <listitem>
  328. <para>
  329. <emphasis><property>options</property></emphasis>: Definiert optionale Optionen
  330. für selbst geschriebene Adapter.
  331. </para>
  332. </listitem>
  333. </itemizedlist>
  334. </sect3>
  335. <sect3 id="zend.validate.set.barcode.basic">
  336. <title>Grundsätzliche Verwendung</title>
  337. <para>
  338. Um zu prüfen ob ein angegebener String ein Barcode ist muss man nur dessen Typ wissen.
  339. Siehe das folgende Beispiel für einen EAN13 Barcode:
  340. </para>
  341. <programlisting language="php"><![CDATA[
  342. $valid = new Zend_Validate_Barcode('EAN13');
  343. if ($valid->isValid($input)) {
  344. // Die Eingabe scheint gültig zu sein
  345. } else {
  346. // Die Eingabe ist ungültig
  347. }
  348. ]]></programlisting>
  349. </sect3>
  350. <sect3 id="zend.validate.set.barcode.checksum">
  351. <title>Optionale Checksumme</title>
  352. <para>
  353. Einige Barcodes können mit einer optionalen Checksumme angegeben werden. Diese Barcodes
  354. würden gültig sein, selbst ohne Checksumme. Trotzdem, wenn eine Checksumme angegeben
  355. wird, dann sollte man Sie auch prüfen. Standardmäßig führen diese Barcode Typen keine
  356. Prüfung der Checksumme durch. Durch Verwendung der Option <property>checksum</property>
  357. kann man definieren ob die Checksumme geprüft oder ignoriert wird.
  358. </para>
  359. <programlisting language="php"><![CDATA[
  360. $valid = new Zend_Validate_Barcode(array(
  361. 'adapter' => 'EAN13',
  362. 'checksum' => false,
  363. ));
  364. if ($valid->isValid($input)) {
  365. // Die Eingabe scheint gültig zu sein
  366. } else {
  367. // Die Eingabe ist ungültig
  368. }
  369. ]]></programlisting>
  370. <note>
  371. <title>Reduzierte Sicherheit durch ausgeschaltete Prüfung der Checksumme</title>
  372. <para>
  373. Indem die Prüfung der Checksumme ausgeschaltet wird, verringert man auch die
  374. Sicherheit der verwendeten Barcodes. Zusätzlich sollte man beachten dass man
  375. die Prüfung der Checksumme für jene Barcode Typen ausschalten kann welche einen
  376. Wert für die Checksumme enthalten müssen. Barcodes welche nicht gültig wären
  377. könnten dann als gültig zurückgegeben werden, selbst wenn Sie es nicht sind.
  378. </para>
  379. </note>
  380. </sect3>
  381. <sect3 id="zend.validate.set.barcode.custom">
  382. <title>Schreiben eigener Adapter</title>
  383. <para>
  384. Man kann eigene Barcode Prüfungen für die Verwendung mit
  385. <classname>Zend_Validate_Barcode</classname> schreiben; das ist oft notwendig wenn man
  386. mit proprietären Barcodes arbeiten muss. Um eine eigene Barcode Prüfung zu schreiben
  387. benötigt man die folgenden Informationen.
  388. </para>
  389. <itemizedlist>
  390. <listitem>
  391. <para>
  392. <emphasis>Length</emphasis>: Die Länge welche der Barcode haben muss. Diese kann
  393. einen der folgenden Werte haben:
  394. </para>
  395. <itemizedlist>
  396. <listitem>
  397. <para>
  398. <emphasis>Integer</emphasis>: Ein Wert größer als 0, was bedeutet das
  399. der Barcode diese Länge haben muss.
  400. </para>
  401. </listitem>
  402. <listitem>
  403. <para>
  404. <emphasis>-1</emphasis>: Es gibt keine Begrenzung der Länge für diesen
  405. Barcode.
  406. </para>
  407. </listitem>
  408. <listitem>
  409. <para>
  410. <emphasis>"even"</emphasis>: Die Länge dieses Barcodes muss eine gerade
  411. Anzahl an Ziffern enthalten.
  412. </para>
  413. </listitem>
  414. <listitem>
  415. <para>
  416. <emphasis>"odd"</emphasis>: Die Länge dieses Barcodes muss eine ungerade
  417. Anzahl an Ziffern enthalten.
  418. </para>
  419. </listitem>
  420. <listitem>
  421. <para>
  422. <emphasis>array</emphasis>: Ein Array von Integer Werten. Die Länge
  423. dieses Barcodes muss einer der gesetzten Array Werte haben.
  424. </para>
  425. </listitem>
  426. </itemizedlist>
  427. </listitem>
  428. <listitem>
  429. <para>
  430. <emphasis>Characters</emphasis>: Ein String der die erlaubten Zeichen für diesen
  431. Barcode enthält. Auhc der Integer Wert 128 ist erlaubt, was für die ersten 128
  432. Zeichen der ASCII Tabelle steht.
  433. </para>
  434. </listitem>
  435. <listitem>
  436. <para>
  437. <emphasis>Checksum</emphasis>: Ein Strung der als Callback für eine Methode
  438. verwendet wird, welche die Prüfung der Checksumme durchführt.
  439. </para>
  440. </listitem>
  441. </itemizedlist>
  442. <para>
  443. Die eigene Barcode Prüfung muss
  444. <classname>Zend_Validate_Barcode_AdapterAbstract</classname> erweitern oder
  445. <interface>Zend_Validate_Barcode_AdapterInterface</interface> implementieren.
  446. </para>
  447. <para>
  448. Als Beispiel, erstellen wir eine Prüfung welche eine gerade Anzahl an Zeichen erwartet
  449. welche alle Ziffern und die Zeichen 'ABCDE' enthalten kann, und die eine Checksumme
  450. benötigt.
  451. </para>
  452. <programlisting language="php"><![CDATA[
  453. class My_Barcode_MyBar extends Zend_Validate_Barcode_AdapterAbstract
  454. {
  455. protected $_length = 'even';
  456. protected $_characters = '0123456789ABCDE';
  457. protected $_checksum = '_mod66';
  458. protected function _mod66($barcode)
  459. {
  460. // Mach einige Prüfungen und gib ein Boolean zurück
  461. }
  462. }
  463. $valid = new Zend_Validate_Barcode('My_Barcode_MyBar');
  464. if ($valid->isValid($input)) {
  465. // Die Eingabe scheint gültig zu sein
  466. } else {
  467. // Die Eingabe ist ungültig
  468. }
  469. ]]></programlisting>
  470. </sect3>
  471. </sect2>