ВведениеКомпонента Zend_Filter предоставляет набор наиболее часто используемых фильтров данных. Она также предоставляет простой механизм формирования цепочек фильтров данных, с использованием которого одни и те же данные могут обрабатываться несколькими фильтрами в порядке, заданном пользователем. Что есть фильтр?В материальном мире фильтр обычно используется для удаления нежелательных частей ввода. Желаемые части ввода проходят сквозь фильтр и являются выводом фильтра. В таких сценариях фильтр является опрератором, который выделяет подмножество ввода. Этот тип фильтра полезен для веб-приложений - удаление недопустимого ввода, лишних пробельных символов и т.д.
Это базовое определение фильтра может быть расширено включением
общих преобразований ввода. Часто встречающееся в веб-приложениях
преобразование - экранирование сущностей HTML (HTML entities).
Например, если поле формы автоматически заполняется ненадежными
данными (например, данными из веб-броузера), то это значение не
должно включать в себя сущности HTML, либо эти сущности должны
быть экранированы, для предотвращения нежелательного поведения
и угроз безопасности. В соответствии с этими требованиями сущности
HTML должны быть удалены или экранированы - выбор подхода зависит
от ситуации. Фильтр, который экранирует сущности HTML, тем не
менее, преобразовывает ввод (например, " Основы использования фильтров
Такое определение фильтра дает основу для
Zend_Filter_Interface, который требует
от классов фильтров реализации одного метода с именем
Ниже приведен пример использования фильтра с двумя вариантами
входных данных - амперсандом ( Использование статического метода get()
Каждый раз загружать нужный класс фильтра и создавать его экземпляр
довольно неудобно, поэтому был создан статический метод
Можно также передавать массив аргументов для конструктора, если это необходимо для используемого класса фильтра.
Использование метода Zend_Filter_Input также позволяет инстанцировать и запускать несколько фильтров и валидаторов для обработки наборов данных. Более подробную информацию читайте в Zend_Filter_Input.
|