| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect2 id="zend.validate.set.barcode">
- <title>Barcode</title>
- <para>
- <classname>Zend_Validate_Barcode</classname> erlaubt es zu prüfen ob ein gegebener Wert als
- Barcode repräsentiert werden kann.
- </para>
- <para>
- <classname>Zend_Validate_Barcode</classname> unterstützt viele Barcode Standards und kann
- sehr einfach mit prorietären Barcode Implementationen erweitert werden. Die folgenden
- Barcode Standards werden unterstützt:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>CODE25</emphasis>: Oft auch "Two of Five" oder "Code 25 Industrial"
- genannt.
- </para>
- <para>
- Dieser Barcode hat keine Begrenzung der Länge. Es unterstützt nur Ziffern, und die
- letzte Ziffer kann eine optionale Checksumme sein welche durch Modulo 10 berechnet
- wird. Dieser Standard sehr alt und wird heutzutage nicht oft verwendet. Übliche
- Anwendungsfälle liegen in der Industrie.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>CODE25INTERLEAVED</emphasis>: Oft auch "Code 2 of 5 Interleaved" genannt.
- </para>
- <para>
- Dieser Standard ist eine Variante von CODE25. Er hat keine Begrenzung der Länge,
- muss aber eine gerade Anzahl an Zeichen enthalten. Es unterstützt nur Ziffern, und
- die letzte Ziffer kann eine optionale Checksumme sein welche durch Modulo 10
- berechnet wird. Dieser Standard wird weltweit verwendet und üblicherweise im Handel.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>CODE39</emphasis>: CODE39 ist einer der ältesten vorhandenen Codes.
- </para>
- <para>
- Dieser Barcode hat eine variable Länge. Er unterstützt Ziffern, großgeschriebene
- alphabetische Zeichen und 7 spezielle Zeichen wie Leerzeichen, Punkte und
- Dollarzeichen. Er kann eine optionale Checksumme enthalten welche durch Modulo 43
- berechnet wird. Dieser Standard wird weltweit verwendet und üblicherweise in der
- Industrie.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>CODE39EXT</emphasis>: CODE39EXT ist eine Erweiterung von CODE39.
- </para>
- <para>
- Dieser Barcode hat die gleichen Eigenschaften wie CODE39. Zusätzlich erlaubt er die
- Verwendung aller 128 ASCII Zeichen. Dieser Standard wird weltweit verwendet und
- ist in der Industrie üblich.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>CODE93</emphasis>: CODE93 ist der Nachfolger von CODE39.
- </para>
- <para>
- Dieser Barcode hat eine variable Länge. Er unterstützt Ziffern, alphabetische
- Zeichen und 7 spezielle Zeichen. Er enthält eine optionale Checksumme welche durch
- Modulo 47 berechnet wird und aus 2 Zeichen besteht. Dieser Standard produziert einen
- kompakteren Code als CODE39 und ist sicherer.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>CODE93EXT</emphasis>: CODE93EXT ist eine Erweiterung von CODE93.
- </para>
- <para>
- Dieser Barcode hat die gleichen Eigenschaften wie CODE93. Zusätzlich erlaubt er die
- Verwendung aller 128 ASCII Zeichen. Dieser Standard wird weltweit verwendung und ist
- in der Industrie üblich.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>EAN2</emphasis>: EAN ist die Abkürzung für "European Article Number".
- </para>
- <para>
- Dieser Barcode muss 2 Zeichen haben. Er unterstützt nur Ziffern und hat keine
- Checksumme. Dieser Standard wird hauptsächlich als Zusatz zu EAN13 (ISBN) verwendet
- wenn diese auf Bücher gedruckt werden.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>EAN5</emphasis>: EAN ist die Abkürzung für "European Article Number".
- </para>
- <para>
- Dieser Barcode muss 5 Zeichen haben. Er unterstützt nur Ziffern und hat keine
- Checksumme. Dieser Standard wird hauptsächlich als Zusatz zu EAN13 (ISBN) verwendet
- wenn diese auf Bücher gedruckt werden.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>EAN8</emphasis>: EAN ist die Abkürzung für "European Article Number".
- </para>
- <para>
- Dieser Barcode kann eine Länge von 7 oder 8 Zeichen haben. Er unterstützt nur
- Ziffern. Wenn er 8 Zeichen lang ist enthält er eine Checksumme. Dieser Standard wird
- weltweit verwendet, hat aber eine sehr begrenzte Reichweite. Er kann auf kleinen
- Artikeln gefunden werden wo ein längerer Barcode nicht gedruckt werden könnte.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>EAN12</emphasis>: EAN ist die Abkürzung für "European Article Number".
- </para>
- <para>
- Dieser Barcode muss eine Länge von 12 Zeichen haben. Er unterstützt nur Ziffern
- wobei die letzte Ziffer immer eine Checksumme ist welche durch Modulo 10 berechnet
- wird. Dieser Standard wird in der USA verwendet und hierbei üblicherweise im Handel.
- Er wurde ersetzt durch EAN13.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>EAN13</emphasis>: EAN ist die Abkürzung für "European Article Number".
- </para>
- <para>
- Dieser Barcode muss eine Länge von 13 Zeichen haben. Er unterstützt nur Ziffern
- wobei die letzte Ziffer immer eine Checksumme ist welche durch Modulo 10 berechnet
- wird. Dieser Standard wird weltweit verwendet, üblicherweise im Handel.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>EAN14</emphasis>: EAN ist die Abkürzung für "European Article Number".
- </para>
- <para>
- Dieser Barcode muss eine Länge von 14 Zeichen haben. Er unterstützt nur Ziffern
- wobei die letzte Ziffer immer eine Checksumme ist welche durch Modulo 10 berechnet
- wird. Dieser Standard wird weltweit verwendet, üblicherweise im Handel. Er ist der
- Nachfolger von EAN13.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>EAN18</emphasis>: EAN ist die Abkürzung für "European Article Number".
- </para>
- <para>
- Dieser Barcode muss eine Länge von 18 Zeichen haben. Er unterstützt nur Ziffern.
- Die letzte Ziffer ist immer eine Checksumme welche durch Modulo 10 berechnet wird.
- Dieser Code wird ost für die Identifizierung von Transport Containern verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>GTIN12</emphasis>: GTIN ist die Abkürzung für "Global Trade Item Number".
- </para>
- <para>
- Dieser Barcode verwendet den gleichen Standard wie EAN12 und ist sein Nachfolger.
- Er wird üblicherweise in den USA verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>GTIN13</emphasis>: GTIN ist die Abkürzung für "Global Trade Item Number".
- </para>
- <para>
- Dieser Barcode verwendet den gleichen Standard wie EAN13 und ist sein Nachfolger.
- Er wird weltweit von der Industrie verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>GTIN14</emphasis>: GTIN ist die Abkürzung für "Global Trade Item Number".
- </para>
- <para>
- Dieser Barcode verwendet den gleichen Standard wie EAN14 und ist sein Nachfolger.
- Er wird weltweit verwendet, üblicherweise im Handel.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>IDENTCODE</emphasis>: Identcode wird von Deutsche Post und DHL verwendet.
- Es ist eine spezialisierte Implementation von Code25.
- </para>
- <para>
- Dieser Barcode muss eine Länge von 12 Zeichen haben. Er unterstützt nur Ziffern und
- die letzte Ziffer ist immer eine Checksumme die mit Modulo 10 berechnet wird. Dieser
- Standard wird hauptsächlich von den Firmen DP und DHL verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>INTELLIGENTMAIL</emphasis>: Intelligent Mail ist ein postalischer Barcode.
- </para>
- <para>
- Dieser Barcode kann eine Länge von 20, 25, 29 oder 31 Zeichen haben. Er unterstützt
- nur Ziffern und enthält keine Checksumme. Dieser Standard ist der Nachfolger von
- <acronym>PLANET</acronym> und <acronym>POSTNET</acronym>. Er wird hauptsächlich von
- den United States Post Services verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>ISSN</emphasis>: <acronym>ISSN</acronym> ist die Abkürzung für
- International Standard Serial Number.
- </para>
- <para>
- Dieser Barcode kann eine Länge von 8 oder 13 Zeichen haben. Er unterstützt nur
- Ziffern wobei die letzte Ziffer eine Checksumme ist welche durch Modulo 11
- berechnet wird. Er wird weltweit für gedruckte Publikationen verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>ITF14</emphasis>: ITF14 ist die GS1 Implementation des Interleaved Two of
- Five Barcodes.
- </para>
- <para>
- Dieser Barcode ist eine spezielle Variante von Interleaved 2 of 5. Er muss eine
- Länge von 14 Zeichen haben und basiert auf GTIN14. Er unterstützt nur Ziffern wobei
- die letzte Ziffer die Ziffer einer Checksumme ist welche durch Modulo 10 berechnet
- wird. Er wird weltweit verwendet, üblicherweise im Handel.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>LEITCODE</emphasis>: Leitcode wird von Deutsche Post und DHL verwendet.
- Er ist eine spezialisierte Implementation von Code25.
- </para>
- <para>
- Dieser Barcode muss eine Länge von 14 Zeichen haben. Er unterstützt nur Ziffern,
- wobei die letzte Ziffer immer eine Checksumme ist welche durch Modulo 10 berechnet
- wird. Dieser Standard wird hauptsächlich von den Firmen DP und DHL verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>PLANET</emphasis>: Planet ist die Abkürzung für Postal Alpha Numeric
- Encoding Technique.
- </para>
- <para>
- Dieser Barcode kann eine Länge von 12 oder 14 Zeichen haben. Er unterstützt nur
- Ziffern wobei die letzt Ziffer immer eine Checksumme ist. Dieser Standard wird
- hauptsächlich von den United States Post Services verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>POSTNET</emphasis>: Postnet wird vom US Post Service verwendet.
- </para>
- <para>
- Dieser Barcode kann eine Länge von 6, 7, 10 oder 12 Zeichen haben. Er unterstützt
- nur Ziffern wobei die letzte Ziffer immer eine Checksumme ist. Dieser Standard wird
- hauptsächlich von den United States Post Services verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>ROYALMAIL</emphasis>: Royalmail wird von Royal Mail verwendet.
- </para>
- <para>
- Dieser Barcode hat keine definierte Länge. Er unterstützt Ziffern, großgeschriebene
- Buchstaben und die letzte Ziffer ist immer eine Checksumme. Dieser Standard wird
- hauptsächlich von Royal Mail für deren Cleanmail Service verwendet. Er wird auch
- <acronym>RM4SCC</acronym> genannt.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>SSCC</emphasis>: SSCC ist die Abkürzung für "Serial Shipping Container
- Code".
- </para>
- <para>
- Dieser Barcode ist eine Variante des EAN Barcodes. Er muss eine Länge von 18 Zeichen
- enthalten und unterstützt nur Ziffern. Die letzte Ziffer muss ein Ziffer für eine
- Checksumme sein welche durch Modulo 10 berechnet wird. Er wird üblicherweise in der
- Transport Industrie verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>UPCA</emphasis>: UPC ist die Abkürzung für "Univeral Product Code".
- </para>
- <para>
- Dieser Barcode ist der Vorgänger von EAN13. Er muss eine Länge von 12 Zeichen haben
- und unterstützt nur Ziffern. Die letzte Ziffer muss die Ziffer einer Checksumme sein
- welche durch Modulo 10 berechnet wird. Er wird üblicherweise in den USA verwendet.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>UPCE</emphasis>: UPCE ist die kurze Variante von UPCA.
- </para>
- <para>
- Dieser Barcode ist die kleinere Variante von UPCA. Er muss eine Länge von 6, 7 oder
- 8 Zeichen haben und unterstützt nur Ziffern. Wenn der Barcode 8 Ziffern lang ist
- enthält er eine Checksumme die durch Modulo 10 berechnet wird. Er wird üblicherweise
- bei kleinen Produkten verwendet wo ein UPCA Barcode nicht passen würde.
- </para>
- </listitem>
- </itemizedlist>
- <sect3 id="zend.validate.set.barcode.options">
- <title>Unterstützte Optionen für Zend_Validate_Barcode</title>
- <para>
- Die folgenden Optionen werden für <classname>Zend_Validate_Barcode</classname>
- unterstützt:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis><property>adapter</property></emphasis>: Setzt den Barcode Adapter
- welcher verwendet wird. Unterstützt werden alle vorher genannten Adapter. Wenn
- ein selbst definierter Adapter verwendet werden soll, muss man den kompletten
- Klassennamen setzen.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis><property>checksum</property></emphasis>: <constant>TRUE</constant>
- wenn der Barcode eine Prüfsumme enthalten soll. Der Standardwert hängt vom
- verwendeten Adapter ab. Es ist zu beachten das einige Adapter es nicht erlauben
- diese Option zu setzen.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis><property>options</property></emphasis>: Definiert optionale Optionen
- für selbst geschriebene Adapter.
- </para>
- </listitem>
- </itemizedlist>
- </sect3>
- <sect3 id="zend.validate.set.barcode.basic">
- <title>Grundsätzliche Verwendung</title>
- <para>
- Um zu prüfen ob ein angegebener String ein Barcode ist muss man nur dessen Typ wissen.
- Siehe das folgende Beispiel für einen EAN13 Barcode:
- </para>
- <programlisting language="php"><![CDATA[
- $valid = new Zend_Validate_Barcode('EAN13');
- if ($valid->isValid($input)) {
- // Die Eingabe scheint gültig zu sein
- } else {
- // Die Eingabe ist ungültig
- }
- ]]></programlisting>
- </sect3>
- <sect3 id="zend.validate.set.barcode.checksum">
- <title>Optionale Checksumme</title>
- <para>
- Einige Barcodes können mit einer optionalen Checksumme angegeben werden. Diese Barcodes
- würden gültig sein, selbst ohne Checksumme. Trotzdem, wenn eine Checksumme angegeben
- wird, dann sollte man Sie auch prüfen. Standardmäßig führen diese Barcode Typen keine
- Prüfung der Checksumme durch. Durch Verwendung der Option <property>checksum</property>
- kann man definieren ob die Checksumme geprüft oder ignoriert wird.
- </para>
- <programlisting language="php"><![CDATA[
- $valid = new Zend_Validate_Barcode(array(
- 'adapter' => 'EAN13',
- 'checksum' => false,
- ));
- if ($valid->isValid($input)) {
- // Die Eingabe scheint gültig zu sein
- } else {
- // Die Eingabe ist ungültig
- }
- ]]></programlisting>
- <note>
- <title>Reduzierte Sicherheit durch ausgeschaltete Prüfung der Checksumme</title>
- <para>
- Indem die Prüfung der Checksumme ausgeschaltet wird, verringert man auch die
- Sicherheit der verwendeten Barcodes. Zusätzlich sollte man beachten dass man
- die Prüfung der Checksumme für jene Barcode Typen ausschalten kann welche einen
- Wert für die Checksumme enthalten müssen. Barcodes welche nicht gültig wären
- könnten dann als gültig zurückgegeben werden, selbst wenn Sie es nicht sind.
- </para>
- </note>
- </sect3>
- <sect3 id="zend.validate.set.barcode.custom">
- <title>Schreiben eigener Adapter</title>
- <para>
- Man kann eigene Barcode Prüfungen für die Verwendung mit
- <classname>Zend_Validate_Barcode</classname> schreiben; das ist oft notwendig wenn man
- mit proprietären Barcodes arbeiten muss. Um eine eigene Barcode Prüfung zu schreiben
- benötigt man die folgenden Informationen.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>Length</emphasis>: Die Länge welche der Barcode haben muss. Diese kann
- einen der folgenden Werte haben:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>Integer</emphasis>: Ein Wert größer als 0, was bedeutet das
- der Barcode diese Länge haben muss.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>-1</emphasis>: Es gibt keine Begrenzung der Länge für diesen
- Barcode.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>"even"</emphasis>: Die Länge dieses Barcodes muss eine gerade
- Anzahl an Ziffern enthalten.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>"odd"</emphasis>: Die Länge dieses Barcodes muss eine ungerade
- Anzahl an Ziffern enthalten.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>array</emphasis>: Ein Array von Integer Werten. Die Länge
- dieses Barcodes muss einer der gesetzten Array Werte haben.
- </para>
- </listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <para>
- <emphasis>Characters</emphasis>: Ein String der die erlaubten Zeichen für diesen
- Barcode enthält. Auhc der Integer Wert 128 ist erlaubt, was für die ersten 128
- Zeichen der ASCII Tabelle steht.
- </para>
- </listitem>
- <listitem>
- <para>
- <emphasis>Checksum</emphasis>: Ein Strung der als Callback für eine Methode
- verwendet wird, welche die Prüfung der Checksumme durchführt.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Die eigene Barcode Prüfung muss
- <classname>Zend_Validate_Barcode_AdapterAbstract</classname> erweitern oder
- <interface>Zend_Validate_Barcode_AdapterInterface</interface> implementieren.
- </para>
- <para>
- Als Beispiel, erstellen wir eine Prüfung welche eine gerade Anzahl an Zeichen erwartet
- welche alle Ziffern und die Zeichen 'ABCDE' enthalten kann, und die eine Checksumme
- benötigt.
- </para>
- <programlisting language="php"><![CDATA[
- class My_Barcode_MyBar extends Zend_Validate_Barcode_AdapterAbstract
- {
- protected $_length = 'even';
- protected $_characters = '0123456789ABCDE';
- protected $_checksum = '_mod66';
- protected function _mod66($barcode)
- {
- // Mach einige Prüfungen und gib ein Boolean zurück
- }
- }
- $valid = new Zend_Validate_Barcode('My_Barcode_MyBar');
- if ($valid->isValid($input)) {
- // Die Eingabe scheint gültig zu sein
- } else {
- // Die Eingabe ist ungültig
- }
- ]]></programlisting>
- </sect3>
- </sect2>
|