Spis treści
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ę.
Czym jest filtr?
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 ("
):
<?php require_once 'Zend/Filter/HtmlEntities.php'; $htmlEntities = new Zend_Filter_HtmlEntities(); echo $htmlEntities->filter('&'); // & echo $htmlEntities->filter('"'); // "