11.2. Łańcuchy filtrów

Często do pewnej wartości potrzebujemy zastosować wiele filtrów w określonej kolejności. Przykładem może być formularz logowania akceptujący jedynie małe znaki alfabetu. Zend_Filter zapewnia prostą metodę dzięki której filtry mogą być wywoływane łańcuchowo. Poniższy kod ilustruje łańcuchowe wywołanie dwóch filtrów dla wysłanej nazwy użytkownika:

<?php
// Zapewnia możliwość łańcuchowego wywoływania filtrów
require_once 'Zend/Filter.php';

// Filtry użyte w przykładzie
require_once 'Zend/Filter/Alpha.php';
require_once 'Zend/Filter/StringToLower.php';

// Tworzymy łańcuch filtrów i dodajemy filtry do łańcucha
$filterChain = new Zend_Filter();
$filterChain->addFilter(new Zend_Filter_Alpha())
            ->addFilter(new Zend_Filter_StringToLower());

// Filtrujemy nazwę użytkownika
$username = $filterChain->filter($_POST['username']);

Filtry są uruchamiane w takiej kolejności, w jakiej zostają dodane do Zend_Filter. W powyższym przykładzie z nazwy użytkownika wpierw są usuwane wszystkie niealfabetyczne znaki, a następnie wszystkie wielkie litery są zamieniane na małe.

W łańcuchu filtrów może być użyty dowolny obiekt, który implementuje interfejs Zend_Filter_Interface.