11.4. Zend_Filter_Input
Zurück | Kapitel 11. Zend_Filter | Weiter

## 11.4. Zend_Filter_Input

### 11.4.1. Einführung

`Zend_Filter_Input` stellt Möglichkeiten für eine strukturierte Methode der Eingabefilterung bereit. Es bietet verschiedene Zwecke, da es die Bedürfnisse von drei unterschiedlichen Gruppen bedient:

- Entwickler

  Obwohl das Filtern von Eingaben niemals so einfach sein kann, wie gar nichts zu tun, sollten Entwickler die Integrität ihrer Daten sicherstellen, ohne das dem Code unnötige Komplexität hinzugefügt werden muss.

- Manager

  Manager jedweder Art, welche die Kontrolle über eine grosse Gruppe von Entwicklern behalten möchten, können eine strukturierte Vorgehensweise für das Filtern von Eingaben durchsetzen, indem der Zugriff auf unbearbeitete Eingabedaten beschränkt oder ausgeschlossen wird.

- Prüfer

  Jene, welche den Code der Anwendung prüfen, müssen schnell und verlässlich erkennen können, wann und wo unbearbeitete Eingabedaten von Entwicklern verwendet werden. Die Charakteristika, die klaren Code fördern, unterstützen Prüfer ebenfalls durch die Bereitstellung von klarer Unterscheidung zwischen den unterschiedlichen Vorgehensweisen, um Eingaben zu filtern.

Es gibt eine Vielzahl von Vorgehensweisen für die Prüfung von Eingaben und es gibt auch eine Vielzahl von Ansätzen, die PHP Entwickler verwenden können. Whitelist Filtern, Blacklist Filtern, reguläre Ausdrücke, bedingte Anweisungen und native PHP Funktionen sind nur einige Beispiele des Potpourri für das Filtern von Eingaben. `Zend_Filter_Input` kombiniert alle diese Ansätze in einer einzigen API mit einheitlichem Verhalten und strikten Namenskonventionen. Alle diese Methoden befolgen eine einfach Regel - wenn die Daten gültig sind, werden sie zurückgegeben, andernfalls wird `FALSE` zurückgegeben. Extreme Einfachheit.

### 11.4.2. Theoretischer Ablauf

Um einen strukturierten Ansatz für das Filtern von Eingaben bereitzustellen, versucht `Zend_Filter_Input` standardmäßig den kontrollierten Zugriff auf die Eingaben zu erzwingen, in dem die Referenzt auf die Quelledaten auf `null` gesetzt werden.

`Zend_Filter_Input` vereint einige verschiedene Ansätze für das Filtern von Eingaben in einer einzigen API mit einem einheitlichem Verhalten und strikten Namenskonventionen (siehe Abschnitt 11.4.1, „Einführung“). Diese Charakteristika machen `Zend_Filter_Input` gleichwertig zu vorhandenen Lösungen, aber sie machen nichts, um diese weiter zu unterstützen, die einen strukturierteren oder rigideren Ansatz benötigen. Deshalb setzt `Zend_Filter_Input` einen kontrollierten Zugriff auf die Eingaben durch.

Zwei Syntax Arten werden unterstützt. In der standardmäßigen (strikten) Vorgehensweise wird ein einziges Argument an den Konstruktur übergeben - das Array, das gefiltert werden soll. Auf ungefiltere Daten kann nur über die `getRaw()` Methode zugegriffen werden:

    <?php
    // $_POST['email'] === 'webmaster@example.com'

    // Filter the $_POST data array
    require_once 'Zend/Filter/Input.php';
    $filterPost = new Zend_Filter_Input($_POST);

    // $_POST is now null
    echo null === $_POST ? 'yes' : 'no'; // prints 'yes'

    // Get the raw e-mail value
    echo $filterPost->getRaw('email'); // prints 'webmaster@example.com'

`Zend_Filter_Input` setzt das übergebene Array (`$_POST`) auf `NULL`, so dass kein direkter Zugriff mehr möglich ist. (Die unbearbeiteten Daten sind nur noch über die `getRaw()` Methode verfügbar, was alles in allem viel einfacher zu kontrollieren und / oder zu vermeiden ist.)

Bei der optionalen (nicht strikten) Vorgehensweise wird `FALSE` als zweites Argument an den Konstruktor übergeben:

    <?php
    // $_POST['email'] === 'webmaster@example.com'

    // Filter the $_POST data array
    require_once 'Zend/Filter/Input.php';
    $filterPost = new Zend_Filter_Input($_POST, false);

    // $_POST remains not null
    echo null === $_POST ? 'yes' : 'no'; // prints 'no'

    // Get the raw e-mail value
    echo $filterPost->getRaw('email'); // prints 'webmaster@example.com'

Die Verwendung des Filters ist genau gleich, außer dass `Zend_Filter_Input` das ursprüngliche Array (`$_POST`) nicht auf `NULL` setzt, so dass Entwickler es weiterhin direkt ansprechen können. Von dieser Vorgehensweise wird zu Gunsten der strikten Vorgehensweise abgeraten.

`Zend_Filter_Input` wurde primär für Arrays gestaltet. Viele Eingabequellen werden automatisch von den superglobalen PHP Arrays (`$_GET`, `$_POST`, `$_COOKIE`, usw.) abgedeckt und Arrays sind das allgemeine Konstrukt, dass für die Speicherung von Eingaben aus anderen Quellen verwendet wird. Wenn du einen skaleren Wert filtern möchtest, beachte Kapitel 11, Zend_Filter.

Zurück | Nach oben | Weiter
11.3. Writing Filters | Zum Anfang | Kapitel 12. Zend_Gdata