<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 17908 -->
<!-- Reviewed: no -->
<sect1 id="zend.validate.migration">

    <title>Migration von vorhergehenden Versionen</title>

    <para>
        Die <acronym>API</acronym> von <classname>Zend_Validate</classname> wurde von Zeit zu Zeit
        geändert. Wenn man begonnen hat <classname>Zend_Validate</classname> und dessen
        Unterkomponenten in früheren Versionen zu verwenden sollte man den folgenden
        Richtlinien folgen um eigene Skripte zur neuen <acronym>API</acronym> zu migrieren.
    </para>

    <sect2 id="zend.validate.migration.fromoneninetooneten">
        <title>Migration von 1.9 zu 1.10 oder neuer</title>
        <sect3 id="zend.validate.migration.fromoneninetooneten.selfwritten">
            <title>Selbst geschriebene Adapter</title>

            <para>
                Wenn in einer selbst geschriebenen Prüfung ein Fehler gesetzt wird um diesen
                zurückzugeben muß die <methodname>_error()</methodname> Methode aufgerufen werden.
                Vor Zend Framework 1.10 konnte man diese Methode ohne einen angegebenen Parameter
                aufrufen. Es wurde dann das erste gefundene Nachrichtentemplate verwendet.
            </para>

            <para>
                Dieses Verhalten ist problematisch wenn man Prüfungen hat die mehr als eine
                Nachricht zurückgeben kann. Auch wenn man eine existierende Prüfung erweitert kann
                man unerwartete Ergebnisse erhalten. Das kann zum Problem führen das der Benutzer
                nicht die Nachricht erhält die man erwartet.
            </para>

            <programlisting language="php"><![CDATA[
My_Validator extends Zend_Validate_Abstract
{
    public isValid($value)
    {
        ...
        $this->_error(); // Unerwartete Ergebnisse zwischen verschiedenen OS
        ...
    }
}
]]></programlisting>

            <para>
                Um dieses Problem zu verhindern erlaubt es die <methodname>_error()</methodname>
                Methode nicht mehr ohne einen angegebenen Parameter aufgerufen zu werden.
            </para>

            <programlisting language="php"><![CDATA[
My_Validator extends Zend_Validate_Abstract
{
    public isValid($value)
    {
        ...
        $this->_error(self::MY_ERROR);
        // Definierter Fehler, keine unerwarteten Ergebnisse
        ...
    }
}
]]></programlisting>
        </sect3>

        <sect3 id="zend.validate.migration.fromoneninetooneten.datevalidator">
            <title>Vereinfachungen im Date Prüfer</title>

            <para>
                Vor Zend Framework 1.10 wurden 2 identische Nachrichten im Date Prüfer geworfen.
                Es gab <constant>NOT_YYYY_MM_DD</constant> und <constant>FALSEFORMAT</constant>.
                Ab Zend Framework 1.10 wird nur mehr die <constant>FALSEFORMAT</constant> Meldung
                zurückgegeben wenn das angegebene Datum mit dem gesetzten Format nicht
                übereinstimmt.
            </para>
        </sect3>

        <sect3 id="zend.validate.migration.fromoneninetooneten.barcodevalidator">
            <title>Fehlerbehebungen im Alpha, Alum und Barcode Prüfer</title>

            <para>
                Vor dem Zend Framework 1.10 waren Nachrichten in den 2 Barcode Adaptern, dem Alpha
                und dem Alnum Prüfer identisch. Das führte zu Problemen bei der Verwendung von
                eigenen Meldungen, Übersetzungen oder mehreren Instanzen dieser Prüfer.
            </para>

            <para>
                Mit Zend Framework 1.10 wurden die Werte dieser Konstanten so geändert das Sie
                eindeutig sind. Wenn man, so wie es im Handbuhc erklärt wird, die Konstanten
                verwendet gibt es keine Änderungen. Aber wenn man den Inhalt der Konstanten im
                eigenen Code verwendet dann muß man diese Ändern. Die folgende Tabelle zeigt die
                geänderten Werte:
            </para>

            <table id="zend.validate.migration.fromoneninetooneten.barcodevalidator.table">
                <title>Vorhandenen Meldungen der Prüfer</title>
                <tgroup cols="3">
                    <thead>
                        <row>
                            <entry>Prüfer</entry>
                            <entry>Konstante</entry>
                            <entry>Wert</entry>
                        </row>
                    </thead>

                    <tbody>
                        <row>
                            <entry>Alnum</entry>
                            <entry><constant>STRING_EMPTY</constant></entry>
                            <entry>alnumStringEmpty</entry>
                        </row>

                        <row>
                            <entry>Alpha</entry>
                            <entry><constant>STRING_EMPTY</constant></entry>
                            <entry>alphaStringEmpty</entry>
                        </row>

                        <row>
                            <entry>Barcode_Ean13</entry>
                            <entry><constant>INVALID</constant></entry>
                            <entry>ean13Invalid</entry>
                        </row>

                        <row>
                            <entry>Barcode_Ean13</entry>
                            <entry><constant>INVALID_LENGTH</constant></entry>
                            <entry>ean13InvalidLength</entry>
                        </row>

                        <row>
                            <entry>Barcode_UpcA</entry>
                            <entry><constant>INVALID_LENGTH</constant></entry>
                            <entry>upcaInvalidLength</entry>
                        </row>

                        <row>
                            <entry>Digits</entry>
                            <entry><constant>STRING_EMPTY</constant></entry>
                            <entry>digitsStringEmpty</entry>
                        </row>
                    </tbody>
                </tgroup>
            </table>
        </sect3>
    </sect2>
</sect1>
