Содержание
- 14.1. Введение
- 14.2. Standard Filter Classes
- 14.3. Цепочки фильтров
- 14.4. Написание фильтров
- 14.5. Zend_Filter_Input
- 14.6. Zend_Filter_Inflector
Компонента 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('&'); // & echo $htmlEntities->filter('"'); // "