Rozdział 11. Zend_Filter
Poprzedni |  | Następny

## Rozdział 11. Zend_Filter

## 11.1. Wprowadzenie

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 "`&amp;`"). 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('&'); // &amp;
    echo $htmlEntities->filter('"'); // &quot;

Poprzedni |  | Następny
10.8. Własne klasy kanału i wpisu | Spis treści | 11.2. Łańcuchy filtrów