Check
Класс-помощьник для валидации данных.
- Методы
- check::is_valid()
- check::is_int()
- check::is_float()
- check::is_number()
- check::is_numeric()
- check::is_datetime()
- check::is_date()
- check::is_time()
- check::is_string()
- check::is_mail()
- check::is_url()
- check::is_aid()
- check::is_ip()
- check::is_unique()
- check::is_phone()
- check::is_isbn()
- check::is_barcode()
- check::checker()
- check::same_as()
- check::compare()
- check::in()
- check::mime()
- check::ext()
- check::size()
- check::width()
- check::height()
Методы
check::is_valid()
Проверяет проходят ли данные правила.
Пример
$array = array(
'str' => 'Я строка, я не IP',
'int' => 22,
'assoc' => array(
'float1' => 14.5,
'float2' => 7.2
)
);
$rules = array(
// Является ли поле числом от 1 до 20, если не указан оператор or, считается за and
'int' => array('int(1, 10) or int(11, 20)', 'Должно быть число от 1 до 20'),
// Является ли числом с плавающей точкой
'assoc.float1' => array('float', 'Число с плавающей точкой дайте'),
// Является ли числом с плавающей точкой больше 5
'assoc.float2' => array('float(0, 5)', 'Число с плавающей точкой меньше пяти дайте'),
// _Не_ является IP
'str' => array('!ip', 'Это IP, а не должно им быть')
);
// false
var_dump(check::is_valid($rules, $array));
// или
try {
if (!check::is_valid($rules, $array))
throw new Check_Except($rules, 'array');
} catch (Check_Except $e){
echo $e;
}
| array[int] | Должно быть число от 1 до 20 |
| array[assoc][float2] | Число с плавающей точкой меньше пяти дайте |
Чтобы конкретизировать невалидность поля при нескольких правилах текст можно писать как JavaScript хэш (ассоциативный массив).
$rules = array(
'int' => array('int(1, 20) in(18, 19, 20)', '{"int": "Текст для int", "in": "Текст для in"}')
);
Методы с префиксом is_ можно использовать сами по себе.
// true
var_dump(check::is_int(20, array(15, 25)))
Обратите внимание: в правилах префикс is_ можно игнорировать.
check::is_int()
Является ли целым числом.
Пример
// false
var_dump(check::is_valid('int', 'int(1, 20)', $array));
// false
var_dump(check::int($array['int'], array(1, 20)));
check::is_float()
Является ли числом с плавающей точкой.
check::is_number()
Является ли числом.
check::is_numeric()
Синоним предыдущего метода.
check::is_datetime()
Является ли датой в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС.
check::is_date()
Является ли датой в формате ГГГГ-ММ-ДД.
check::is_time()
Является ли временем в формате ЧЧ:ММ:СС.
check::is_string()
Не является ли строка пустой.
check::is_mail()
Является ли мейлом.
check::is_url()
Является ли УРЛом.
check::is_aid()
Является ли альтернативным идентификатором.
Пример
// true
var_dump(check::is_aid('l_ex-a'));
// false
var_dump(check::is_aid('-lexa'));
// false
var_dump(check::is_aid('lexa_'));
// false
var_dump(check::is_aid('Лёха'));
check::is_ip()
Является ли IP.
check::is_unique()
Не существует ли в таблице поле с таим значением.
Пример
// true
var_dump(check::is_valid('lexa', 'unique(table.field)'));
// или
// true
var_dump(check::is_valid('lexa', 'unique(table.field, and where)'));
Первый параметр пишется через точку! таблица.поле или база.таблица.поле
check::is_phone()
Является ли телефонным номером. Этот метод ничего магического не делает, он просто вырезает всё, кроме цифр и сравнивает длинну со значением. По умолчанию значения 7, 10 и 11. Формируйте телефонные номера методом int::phone().
check::is_isbn()
Проверяет валидность ISBN.
check::is_barcode()
Проверяет валидность штрихкода форматов: EAN-8, UCC-12 (UCC-A), EAN-13 и EAN-14 (ITF-14).
check::checker()
Вызывает внешнюю функцию или метод для проверки.
Пример
function testit($value, $params = array()){
// $value - Some text
// $params - array('param1', 'param2')
return true;
}
// true
var_dump(check::is_valid('Some text', 'checker(testit, param1, param2)'));
Чтобы не вызывать внешнюю функцию, а сделать шаблон для правил "родным", следует создать функцию с префиксом check.
function check_testit($value, $params = array()){
// $value - Some text
// $params - array('param1', 'param2')
return true;
}
// true
var_dump(check::is_valid('Some text', 'testit(param1, param2)'));
Помимо $value и $params функции-валидаторы получают и другие параметры, но они не всегда нужны. Если хотите увидеть все входящие данные используйте func_get_args().
Обратите внимание: этот метод метод и методы ниже нельзя использовать отдельно от валидатора!
check::same_as()
Сравнивает значение текущего поля с полем из параметра.
$array = array(
'password' => 'myPass',
'rep_password' => 'mypass'
);
// false
var_dump(check::is_valid('rep_password', 'same_as(password)', $array));
check::compare()
Сравнивает данные.
Пример
// true
var_dump(check::is_valid('5.2.4', 'compare(>=, 4.2.8)'));
check::in()
Является ли значением из списка.
check::mime()
Проверяет MIME-тип файла. В параметрах можно использовать "жадность": image/* - все типы группы image.
check::ext()
Проверяет расширение файла.
check::size()
Проверяет размер файла.
check::width()
Проверяет ширину изображения.
check::height()
Проверяет высоту изображения.