Глава 14. Zend_Filter

14.1. Введение

Компонента Zend_Filter предоставляет набор наиболее часто используемых фильтров данных. Она также предоставляет простой механизм формирования цепочки фильтров данных, посредством которого которому одни и те же данные могут обрабатывать несколько фильтров в порядке, заданном пользователем.

Что такое фильтр?

В материальном мире фильтр обычно используется для удаления нежелательных частей ввода. Желаемые части ввода проходят сквозь фильтр как вывод фильтра (например, кофе). В таких сценариях фильтр является опрератором, который выделяет подмножество ввода. Этот тип фильтра полезен для веб-приложений - удаление недопустимого ввода, лишних пробельных символов и т.д.

Это базовое определение фильтра может быть расширено включением общих преобразований ввода. Часто встречающееся в веб-приложениях преобразование - экранирование сущностей HTML (HTML entities). Например, если поле формы автоматически заполняется ненадежными данными (пример, данными из веб-броузера), то это значение не должно включать в себя сущности HTML, либо эти сущности должны быть экранированы, для предотвращения нежелательного поведения и угроз безопасности. В соответствии с этими требованиями сущности HTML должны быть удалены или экранированы - выбор подхода зависит от ситуации. Фильтр, который экранирует сущности HTML, тем не менее, преобразовывает ввод (например, "&" преобразовывается в "&"). Поддержка таких случаев использования важна для веб-разработчиков и "фильтрация" в контексте использования Zend_Filter подразумевает выполнение некоторых преобразований над входными данными.

Такое определение фильтра дает основу для Zend_Filter_Interface, который требует от классов фильтров реализации одного метода с именем filter().

Ниже приведен пример использования фильтра с двумя вариантами входных данных - амперсандом (&) и двойными кавычками (").

<?php
require_once 'Zend/Filter/HtmlEntities.php';
$htmlEntities = new Zend_Filter_HtmlEntities();
echo $htmlEntities->filter('&'); // &amp;
echo $htmlEntities->filter('"'); // &quot;

    Поддержать сайт на родительском проекте КГБ