<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 17172 -->
<!-- Reviewed: no -->
<sect1 id="zend.validate.set" xmlns:xi="http://www.w3.org/2001/XInclude">

    <title>Standard Prüfklassen</title>

    <para>
        Zend Framework kommt mit einem Standardset von Prüfklassen, welche fertig zur Verwendung
        sind.
    </para>

    <sect2 id="zend.validate.set.alnum">
        <title>Alnum</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> nur
            alphabetische und digitale Zeichen enthält. Dieser Prüfer enthält eine Option um
            auszuwählen ob Leerzeichen als gültig anzusehen sind.
        </para>

        <note>
            <para>
                Alphabetische Zeichen bedeuten Zeichen die in jeder Spache Wörter bilden. Trotzdem
                wird das englische Alphabet in den folgenden Sprachen für alphabethische Zeichen
                verwendet: Chinesisch, Japanisch, Koreanisch. Die Sprache wurde von
                <classname>Zend_Locale</classname> spezifiziert.
            </para>
        </note>

    </sect2>

    <sect2 id="zend.validate.set.alpha">
        <title>Alpha</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> nur
            alphabetische Zeichen enthält. Dieser Prüfer enthält eine Option um auszuwählen ob
            Leerzeichen als gültig anzusehen sind.
        </para>
    </sect2>

    <sect2 id="zend.validate.set.barcode">
        <title>Barcode</title>
        <para>
            Dieser Prüfer wird mit einem Barcode Typ instanziert gegen den ein Barcode Wert geprüft
            werden soll. Aktuell werden die "<code>UPC-A</code>" (Universal Product Code) und
            "<code>EAN-13</code>" (European Article Number) Barcode Typen unterstützt, und die
            <methodname>isValid()</methodname> Methode gibt dann und nur dann true zurück wenn die
            Eingabe erfolgreich gegen den Barcode Prüfalgorithmus geprüft wurde. Es sollten alle von
            den Ziffern 0 bis 9 (0-9) unterschiedliche Zeichen vom Eingabewert entfernt werden bevor
            dieser an den Prüfer übergeben wird.
        </para>
    </sect2>

    <sect2 id="zend.validate.set.between">
        <title>Between</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> zwischen
            dem minimalen und maximalen Grenzwert ist. Der Vergleich ist standardmäßig inklusive
            (<varname>$value</varname> kann gleich dem Grenzwert sein), kann aber überschrieben
            werden um einen strikten Vergleich dort durchzuführen wo <varname>$value</varname>
            strikt größer als das Minimum und strikt kleiner als das Maximum sein muß.
        </para>
    </sect2>

    <sect2 id="zend.validate.set.ccnum">
        <title>Ccnum</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> dem Luhn
            Algorithmus (mod-10 Checksumme) für Kreditkarten Nummern folgt.
        </para>
    </sect2>

    <sect2 id="zend.validate.set.date">
        <title>Date</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> ein
            gültiges Datum im Format <code>YYYY-MM-DD</code> ist. Wenn die optionale
            <code>locale</code> Option gesetzt ist, dann wird das Datum entsprechend dem gesetzten
            Gebietsschemas geprüft. Und wenn die optionale <code>format</code> Option gesetzt wird,
            dann wird dieses Format für die Prüfung herangezogen. Für Details über die optionalen
            Parametern siehe <link
                linkend="zend.date.others.comparison.table">Zend_Date::isDate()</link>.
        </para>
    </sect2>

    <xi:include href="Zend_Validate-Db.xml" />

    <sect2 id="zend.validate.set.digits">
        <title>Digits</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> nur
            digitale Zeichen enthält.
        </para>
    </sect2>

    <xi:include href="Zend_Validate-EmailAddress.xml" />

    <sect2 id="zend.validate.set.float">
        <title>Float</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> ein
            Fließkomma Wert ist. Seit Zend Framework 1.8 verwendet diese Prüfung auch das aktuelle
            Gebietsschema des Browsers, der Umgebung oder eines anwendungsweit gesetzten
            Gebietsschemas. Man kann natürlich die Zugriffsmethoden get/setLocale verwenden um das
            verwendete Gebietsschema zu verändern oder es bei der Erstellung einer Instanz dieser
            Prüfung angeben.
        </para>
    </sect2>

    <sect2 id="zend.validate.set.greater_than">
        <title>GreaterThan</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> größer als
            die Minimale Grenze ist.
        </para>
    </sect2>

    <sect2 id="zend.validate.set.hex">
        <title>Hex</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> nur
            Hexadezimale Digitale Zeichen enthält.
        </para>
    </sect2>

    <xi:include href="Zend_Validate-Hostname.xml" />

    <sect2 id="zend.validate.set.iban">
        <title>Iban</title>
        <para>
            Gibe nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> eine
            gültige IBAN (Internationale Bank Account Nummer) enthält. IBAN Nummern werden gegen ein
            Land geprüft in dem Sie verwendet werden und durch eine Checksumme.
        </para>
        <para>
            Es gibt zwei Wege um IBAN Nummern zu prüfen. Als ersten Weg kann man ein Gebietsschema
            angeben das das Land repräsentiert. Jede angegebene IBAN Nummer wird das gegen dieses
            Land geprüft.
        </para>
        <programlisting language="php"><![CDATA[
$validator = new Zend_Validate_Iban('de_AT');
$iban = 'AT611904300234573201';
if ($validator->isValid($iban)) {
    // IBAN scheint gültig zu sein
} else {
    // IBAN ist ungültig
    foreach ($validator->getMessages() as $message) {
        echo "$message\n";
    }
}
]]></programlisting>
        <para>
            Das sollte man tun wenn man IBAN Nummern gegen ein einzelnes Land prüfen will. Der
            einfachere Weg der Prüfung ist es kein Gebietsschema anzugeben wie im nächsten Beispiel
            gezeigt.
        </para>
        <programlisting language="php"><![CDATA[
$validator = new Zend_Validate_Iban();
$iban = 'AT611904300234573201';
if ($validator->isValid($iban)) {
    // IBAN scheint gültig zu sein
} else {
    // IBAN ist ungültig
}
]]></programlisting>
        <para>
            Aber das zeigt ein großes Problem: Wenn man nur IBAN Nummern von einem einzelnen Land
            akzeptieren darf, zum Beispiel Frankreich, sind auch die IBAN Nummer von anderen Ländern
            gültig. Deshalb als Erinnerung: Wenn man IBAN Nummern gegen ein definiertes Land zu
            prüfen hat, sollte man ein Gebietsschema angeben. Und wenn man alle IBAN Nummern
            akzeptieren will unabhängig von irgendeinem Land kann der Einfachheit halber das
            Gebietsschema unterdrückt werden.
        </para>
    </sect2>

    <sect2 id="zend.validate.set.identical">
        <title>Identical</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn der angegebene Token mit
            <varname>$value</varname> identisch ist. Diese Prüfung kann jeden beliebigen Typ
            handhaben.
        </para>

        <para>
            Der Token gegen den geprüft werden soll kann entweder als Parameter bei der
            Instanziierung gesetzt werden, oder durch die Verwendung der
            <methodname>setToken()</methodname> Methode.
        </para>

        <programlisting language="php"><![CDATA[
// Setzen des Token bei der Instanziierung
$validator = new Zend_Validate_Identical(array('one' => 'two'));
if ($validator->isValid(array('one' => 'two'))) { // Token gültig
    // Irgendwas machen
}

// Setzen des Tokens durch Verwendung von setToken()
$validator->setToken(true);
if ($validator->isValid(1)) { // Token gültig
    // Irgendwas machen
}
]]></programlisting>
    </sect2>

    <sect2 id="zend.validate.set.in_array">
        <title>InArray</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn ein "needle"
            <varname>$value</varname> in einem "haystack" Array enthalten ist. Wenn die Strict
            Option <constant>TRUE</constant> ist, wird der Typ von <varname>$value</varname> auch
            geprüft.
        </para>
    </sect2>

    <sect2 id="zend.validate.set.int">
        <title>Int</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> ein
            gültiger Integer ist. Seit Zend Framework 1.8 verwendet diese Prüfung auch das aktuelle
            Gebietsschema des Browsers, der Umgebung oder eines anwendungsweit gesetzten
            Gebietsschemas. Man kann natürlich die Zugriffsmethoden get/setLocale verwenden um das
            verwendete Gebietsschema zu verändern oder es bei der Erstellung einer Instanz dieser
            Prüfung angeben.
        </para>
    </sect2>

    <sect2 id="zend.validate.set.ip">
        <title>Ip</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> eine
            gültige IP Adresse ist.
        </para>
    </sect2>

    <sect2 id="zend.validate.set.less_than">
        <title>LessThan</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> kleiner
            als die Maximale Grenze ist.
        </para>
    </sect2>

    <sect2 id="zend.validate.set.not_empty">
        <title>NotEmpty</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> kein
            leerer Wert ist.
        </para>
    </sect2>

    <sect2 id="zend.validate.set.regex">
        <title>Regex</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn <varname>$value</varname> mit einem
            Regular Expression Pattern geprüft werden kann.
        </para>
    </sect2>

    <xi:include href="Zend_Validate-Sitemap.xml" />

    <sect2 id="zend.validate.set.string_length">
        <title>StringLength</title>
        <para>
            Gibt nur dann <constant>TRUE</constant> zurück wenn die Länge des Strings von
            <varname>$value</varname> mindstens ein Minimum und nicht größer als ein Maximum ist
            (wenn die max Option nicht <constant>NULL</constant> ist). Wirft die
            <methodname>setMin()</methodname> Methode eine Ausnahme wenn die minimale Länge auf
            einen größeren Wert gesetzt wird als die maximale Länge, und die
            <methodname>setMax()</methodname> Methode wirft eine Ausnahme wenn die maximale Länge
            auf einen kleineren Wert als die minimale Länge gesetzt wird. Seit Version 1.0.2
            unterstützt diese Klasse UTF-8 und andere Zeichensätze, basierend auf dem aktuellen Wert
            von <ulink
                url="http://www.php.net/manual/de/ref.iconv.php#iconv.configuration"><code>iconv.internal_encoding</code></ulink>.
            Wenn man ein anderes Encoding benötigt kann man es mit den Zugriffsmethoden getEncoding
            und setEncoding setzen.
        </para>
    </sect2>

</sect1>
<!--
vim:se ts=4 sw=4 et:
-->
