<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.filter.filter_chains">
    <title>Filter Ketten</title>

    <para>
        Oft müssen mehrere Filter auf Werte in einer speziellen Reihenfolge angewendet werden. Zum
        Beispiel, ein Login Formular das einen Benutzernamen akzeptiert welcher nur kleingeschrieben
        und alphabetische Zeichen haben sollte. <classname>Zend_Filter</classname> bietet eine
        einfache Methode mit der Filter zusammengekettet werden können. Der folgende Code zeigt wie
        eine Verkettung von zwei Filtern für das übermitteln eines Benutzernamens funktioniert:
    </para>

    <programlisting language="php"><![CDATA[
// Eine Filterkette erstellen und die Filter der Kette hinzufügen
$filterChain = new Zend_Filter();
$filterChain->addFilter(new Zend_Filter_Alpha())
            ->addFilter(new Zend_Filter_StringToLower());

// Den Benutzernamen filtern
$username = $filterChain->filter($_POST['username']);
]]></programlisting>

    <para>
        Filter werden in der Reihenfolge ausgeführt in der Sie <classname>Zend_Filter</classname>
        hinzugefügt werden. Im obigen Beispiel wird dem Benutzernamen zuerst jedes
        nicht-alphabetische Zeichen entfernt und anschließend jeder Großbuchstabe in einen
        Kleinbuchstaben umgewandelt.
    </para>

    <para>
        Jedes Objekt das <classname>Zend_Filter_Interface</classname> implementiert kann in einer
        Filterkette verwendet werden.
    </para>

    <sect2 id="zend.filter.filter_chains.order">
        <title>Ändern der Reihenfolge der Filterkette</title>

        <para>
            Seit 1.10 unterstützt die <classname>Zend_Filter</classname> Kette auch das Ändern der
            Kette durch voranstellen oder anhängen von Filtern. Zum Beispiel macht der nächste
            Code exakt das gleiche wie das andere Beispiel für die Filterkette des Benutzernamens:
        </para>

        <programlisting language="php"><![CDATA[
// Eine Filterkette erstellen und die Filter der Kette hinzufügen
$filterChain = new Zend_Filter();

// Dieser Filter wird der Filterkette angehängt
$filterChain->appendFilter(new Zend_Filter_StringToLower());

// Dieser Filter wird am Beginn der Kette vorangestellt
$filterChain->prependFilter(new Zend_Filter_Alpha());

// Nach dem Benutzernamen filtern
$username = $filterChain->filter($_POST['username']);
]]></programlisting>
    </sect2>
</sect1>
