Komponent Zend_Filter zapewnia zestaw najczęściej potrzebnych filtrów danych. Zapewnia też prosty mechanizm łańcuchowego wywoływania filtrów, dzięki ktoremu wiele filtrów może być dodanych do jednej danej w kolejności zdefiniowanej przez programistę.
W fizycznym świecie, filtr najczęściej jest używany do usuwania niechcianych części danych wejściowych, a żądana część danych wejściowych przechodzi przez filtr jako dane wyjściowe (np. kawa). W takim scenariuszu filtr jest operatorem który tworzy podzbiór danych wejściowych. Ten typ filtrowania jest użyteczny w aplikacjach web - usuwanie niedozwolonych danych wejściowych, usuwanie niepotrzebnych białych znaków itp.
Ta podstawowa definicja filtra może być rozszerzona, aby zawierała
uogólnione transformacje na danych wejściowych. Pospolitą transformacją
stosowaną w aplikacjach web jest zabezpieczanie przed encjami HTML.
Na przykład, jeśli pole formularza jest automatycznie wypełniane
niefiltrowanymi danymi wejściowymi (np., z przeglądarki internetowej),
ta wartość nie może zawierać encji HTML lub posiadać jedynie
zabezpieczone encje HTML, w celu zapobiegania niechcianemu zachowaniu
aplikacji oraz słabym punktom bezpieczeństwa. Aby sprostać tym
wymaganiom, encje HTML, ktore znajdują się w danych wejściowych muszą
być usunięte lub zabezpieczone. Oczywiście to, ktore podejście jest
bardziej odpowiednie zależy od sytuacji. Filtr, który usuwa encje HTML
działa w kontekście pierwszej definicji filtra - operator który tworzy
podzbiór danych wejściowych. Filtr, ktory zabezpiecza encje HTML
natomiast przekształca dane wejściowe (np. znak "&"
jest zamieniany na "&"). Wspieranie programistów
przy takich przypadkach użycia jest ważne, i "filtrowanie" w kontekście
użycia Zend_Filter oznacza przeprowadzanie pewnych transformacji na
danych wejściowych.
Mająć ustaloną w ten sposób definicję filtra, możemy zapewnić podstawę
dla interfejsu Zend_Filter_Interface, który wymaga
zaimplementowania przez klasę filtra jednej metody nazwanej
filter().
Poniżej jest podstawowy przykład użycia filtra na dwóch danych
wyjściowych, na znaku Et (&) oraz na znaku podwójnego
cudzysłowu ("):
$htmlEntities = new Zend_Filter_HtmlEntities();
echo $htmlEntities->filter('&'); // &
echo $htmlEntities->filter('"'); // "
Jeśli niewygodne jest ładowanie danej klasy filtra i tworzenie
instancji filtra, możesz użyć statycznej metody
Zend_Filter::get() jako alternatywnego sposobu
wywołania. Pierwszym argumentem tej metody są dane wejściowe, które
chcesz przekazać do metody filter(). Drugi argument
jest łańcuchem znaków, który odpowiada, bazowej nazwie klasy filtra,
relatywnie do przestrzeni nazw Zend_Filter. Metoda
get() automatycznie ładuje klasę, tworzy instancję i
wywołuje metodę filter() na danych wejściowych.
echo Zend_Filter::get('&', 'HtmlEntities');
Możesz także przekazać tablicę argumentów konstruktora, jeśli są one potrzebne w klasie filtra.
echo Zend_Filter::get('"', 'HtmlEntities', array(ENT_QUOTES));
Użycie statyczne może być wygodne dla jednorazowego wywołania
filtra, ale jeśli musisz wywołać filtr dla większej ilości danych,
bardziej efektywne jest wykorzystanie rozwiązania pokazanego w
pierwszym przykładzie, czyli utworzenie instancji obiektu filtra
i wywołanie metody filter().
Dodatkowo klasa Zend_Filter_Input pozwala na utworzenie instancji i wywołanie większej ilości klas filtrów i weryfikatorów w celu przetworzenia zestawu danych wejściowych. Zobacz „Zend_Filter_Input”.