Глава 19. Zend_Filter

Содержание

19.1. Введение
19.2. Standard Filter Classes
19.2.1. Alnum
19.2.2. Alpha
19.2.3. BaseName
19.2.4. Decrypt
19.2.4.1. Decryption with Mcrypt
19.2.4.2. Decryption with OpenSSL
19.2.5. Digits
19.2.6. Dir
19.2.7. Encrypt
19.2.7.1. Encryption with Mcrypt
19.2.7.2. Encryption with OpenSSL
19.2.8. HtmlEntities
19.2.9. Int
19.2.10. StripNewlines
19.2.11. RealPath
19.2.12. StringToLower
19.2.13. StringToUpper
19.2.14. StringTrim
19.2.15. StripTags
19.3. Цепочки фильтров
19.4. Написание фильтров
19.5. Zend_Filter_Input
19.5.1. Declaring Filter and Validator Rules
19.5.2. Creating the Filter and Validator Processor
19.5.3. Retrieving Validated Fields and other Reports
19.5.3.1. Querying if the input is valid
19.5.3.2. Getting Invalid, Missing, or Unknown Fields
19.5.3.3. Getting Valid Fields
19.5.4. Using Metacommands to Control Filter or Validator Rules
19.5.4.1. The FIELDS metacommand
19.5.4.2. The PRESENCE metacommand
19.5.4.3. The DEFAULT_VALUE metacommand
19.5.4.4. The ALLOW_EMPTY metacommand
19.5.4.5. The BREAK_CHAIN metacommand
19.5.4.6. The MESSAGES metacommand
19.5.4.7. Using options to set metacommands for all rules
19.5.5. Adding Filter Class Namespaces
19.6. Zend_Filter_Inflector
19.6.1. Operation
19.6.2. Setting Paths To Alternate Filters
19.6.3. Setting the Inflector Target
19.6.4. Inflection Rules
19.6.4.1. Static Rules
19.6.4.2. Filter Inflector Rules
19.6.4.3. Setting Many Rules At Once
19.6.5. Utility Methods
19.6.6. Using Zend_Config with Zend_Filter_Inflector

19.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;