Содержание
- 40.1. Введение
- 40.2. Standard Validation Classes
- 40.2.1. Alnum
- 40.2.2. Alpha
- 40.2.3. Barcode
- 40.2.4. Between
- 40.2.5. Ccnum
- 40.2.6. Date
- 40.2.7. Digits
- 40.2.8. EmailAddress
- 40.2.9. Float
- 40.2.10. GreaterThan
- 40.2.11. Hex
- 40.2.12. Hostname
- 40.2.13. InArray
- 40.2.14. Int
- 40.2.15. Ip
- 40.2.16. LessThan
- 40.2.17. NotEmpty
- 40.2.18. Regex
- 40.2.19. StringLength
- 40.3. Цепочки валидаторов
- 40.4. Написание валидаторов
Компонента Zend_Validate предоставляет набор наиболее часто используемых валидаторов. Он также предоставляет простой механизм формирования цепочки валидаторов, посредством которого которому к одним и тем же данные может быть применено несколько валидаторов в порядке, заданном пользователем.
Что такое валидатор?
Валидатор проверяет входные данные на предмет соответствия некоторым требованиям и возвращает результат булевого типа. Если входные данные не соответствуют требованиям, то валидатор может предоставить информацию о том, какому требованию (требованиям) не соответствуют входные данные.
Например, веб-приложение может требовать, чтобы имя пользователя было длиной от 6 до 12 символов и содержало только алфавитно-цифровые символы. Для того, чтобы проверить, соответствует ли имя пользователя этим требованиям, можно использовать валидатор. Если выбранное имя пользователя не соответствует одному из требований (или обоим требованиям), то будет также полезно знать, каким именно требованиям не соответствует имя пользователя.
Такое определение валидации дает основу для Zend_Validate_Interface
, который определяет два метода - isValid()
и getMessages()
. Метод isValid()
выполняет валидацию переданного значения, возвращая true
тогда и только тогда, когда значение прошло проверку по критериям валидации. Если isValid()
возвращает false
, то getMessages()
используется для получения массива сообщений, объясняющих, по каким причинам валидация не была пройдена.
Замечание | |
---|---|
|
Следующий пример демонстрирует проверку адреса e-mail:
<?php require_once 'Zend/Validate/EmailAddress.php'; $validator = new Zend_Validate_EmailAddress(); if ($validator->isValid($email)) { // email прошел валидацию } else { // email не прошел валидацию; вывод причин этого foreach ($validator->getMessages() as $message) { echo "$message\n"; } } ?>