Используется для проверки правильности параметров запроса интерфейса API.
При реализации интерфейса API на стороне сервера каждый параметр каждого интерфейса должен быть проверен на его достоверность, чтобы избежать неправильного ввода данных в систему. Эту работу можно назвать трудоемкой и трудоемкой, но она должна быть выполнена. И сам PHP является слабо типизированным языком. Сложнее проверить не только значение, но и тип данных.
Этот инструмент предназначен для этой работы, позволяет эффективно сократить объем кодирования, читаемость кода хорошая.
Глядя на следующий код, вы можете получить общее представление об использовании, которое не должно быть сложным для понимания:
$params = $request - > query (); // Get GET parameters // Validation (if the validation fails, an exception is thrown) Validation::validate($params, [ "offset" => "IntGe:0", "count" => "Required|IntGeLe:1,200", ]);
Он поддерживает проверку нескольких типов данных: целое число, с плавающей запятой, bool, строка, массив, объект, файл, дата и время. Он может проверять параметры во вложенных структурах данных, а также поддерживает проверку с помощью условного суждения.
Каталог
1 Введение
- 1.1 Зачем писать такой инструмент?
- 1.2 характеристики
- 1.3 Простой пример
- 2 установка
3 Быстрый Старт
- 3.1 Полный пример (без каких-либо рамок)
- 3.2 Обработка ошибок при отказе в проверке
- 3.3 Использование в Рамках третьих сторон
4. Подробное использование
- 4.1 Проверка целочисленных параметров
- 4.2 Проверка параметров с плавающей запятой
- 4.3 Проверка параметров типа bool
- 4.4 Проверка параметров строки
- 4.5 Проверка параметров массива, объекта, файла, даты и времени
- 4.6 Последовательный верификатор (с)
- 4.7 Необходимый Верификатор
- 4.8 Игнорировать все необходимые валидаторы
- Проверка 4.9 Вложенных параметров
- 4.10 Верификатор Условных суждений
- 4.11 Правила проверки Параллельных (или)
- 4.12 О Специальных Значениях
null
,""
,0
,ложь
Проблема - 4.13 О связи между основными типами данных и строками
- 4.14 Вывод Текста Пользовательской Информации Об Ошибках
- 4.15 Интернационализация
- 4.16 Интернационализация (до версии 0.4)
Приложение А – Список проверяющих
- A. 1 целое число
- A. 2 Тип с Плавающей Запятой
- A. 3 тип bool
- A. 4 Строковый тип
- A. 5 Тип массива
- A. 6 Тип объекта
- A. 7 Тип файла
- A. 8 Тип даты и времени
- A. 9 Тип Условного Суждения
- A. 10 Другие Средства Проверки
1 Введение
1.1 Зачем писать такой инструмент?
Когда я использовал фреймворк Laravel, Laravel предоставлял инструмент проверки параметров, но он работал не очень гладко:
- Каждая проверка записывает класс проверки (наследующий XXX), который слишком громоздок, и в системе будет еще много классов. Если эти классы повторно используются во многих местах или для “большего” повторного использования (уменьшения количества дубликатов кода) и создания множества отношений наследования между этими классами, то обслуживание этих классов само по себе является большой проблемой.
- У верификатора есть проблема “многозначности”. Например, у него есть один.
размер
Верификатор, который поддерживает проверку строковых, целых, файловых и других типов параметров, для разных типов данныхразмер
Значение разное. Это все равно что запоминать английские слова. Существует так много английских слов. Они имеют много значений. Они имеют разное значение в разных контекстах. Например, слово “подарок” означает как “подарок”, так и “посещение”, а также “подарок”. Такого рода многозначные слова-самая большая головная боль. Неясно, что это на самом деле значит, и это невозможно запомнить.
Для того, чтобы решить эти проблемы, я написал такой инструмент.
1.2 характеристики
- Каждая функция имеет модульные тесты (41 тест, 369 утверждений).
- Проверка поддержки бесконечно вложенных структур данных (см., например, Раздел 1.3)
- Поддержка условной проверки, применение различных правил проверки в зависимости от значений параметров (см., например, Раздел 1.3)
- Поддержка проверки регулярных выражений
- Краткая и четкая логика проверки
- Легкий вес, нет необходимости определять и поддерживать различные классы проверки
- Верификатор имеет четкую семантику и не имеет проблемы “многозначности”
- Легко усваивается и легко запоминается. Например, валидаторы целых чисел начинаются с “Int”, валидаторы с плавающей запятой начинаются с “Float” и так далее. Единственное, что не соответствует этому правилу, – это валидаторы строк, некоторые из которых начинаются с “Str”, но другие не начинаются с “Str”, такие как
Регулярное выражение
,Ip
,Электронная почта
,Url
И так далее. - Никакая структура не привязана, никаких зависимостей. Вы можете использовать этот инструмент в любом фреймворке, даже если вы его не используете.
1.3 Простой пример
В следующем примере показана проверка параметра Запроса для запроса для получения списка жалоб пользователей (обратите внимание, что Условная проверка И нацелены на Проверку вложенных структур данных ):
// Verification rules $validations = [ "Offset"=> "IntGe: 0", // parameter offset should be greater than or equal to 0 "Count" => "Required | IntGeLe: 1,200", // parameter count is necessary and greater than or equal to 1 is less than or equal to 200 "Type"=> "IntIn: 1,2", // parameter type is: 1,2 "state" => [ 'IfIntEq: type, 1 | IntEq: 0', // If type== 1 (critical recommendation), then the parameter state can only be 0 'IfIntEq: type, 2 | IntIn: 0, 1, 2', // If type==2 (user complaint), then the parameter state can be taken as: 1, 2, 3 ], "Search. keyword" => "StrLenGeLe: 1,100", // search. keyword should be a long string between [1,100]. "Search. start_time"=> "Date", // search. start_time should be a string containing a valid date "Search. end_time"=> "Date", // search. end_time should be a string containing a valid date ]; // Validated parameters $params = [ "Offset" => 0, // / Starting with Article 0 Record "Count" = > 10, // returns up to 10 records "Type" => 2, // 1 - Criticism Suggestions, 2 - User Complaints "State" => 0, // 0 - to be processed, 1 - to be processed, 2 - to be processed "Search" => [// search criteria "Keyword" =>'hardware failure', // keyword "Start_time"=> "2018-01-01", //start date "End_time"=> "2018-01-31", //end date ], ]; // Validation (if the validation fails, an exception is thrown) Validation::validate($params, $validations);
2 установка
Установка через композитора
composer require webgeeker/validation:^0.4
3 Быстрый Старт
3.1 Полный пример (без каких-либо рамок)
Этот пример проверяется напрямую $_POST
Параметры в форме (СООБЩЕНИЕ) показывают наиболее простое использование
Будьте осторожны При ошибке проверки возникает исключение, содержащее информацию об описании ошибки
3.2 Обработка ошибок при отказе в проверке
Если проверка завершается неудачно, Проверка::проверка(...)
Метод создает исключения. Рекомендуется, чтобы эти исключения фиксировались равномерно на уровне платформы, а информация об описании ошибок извлекалась и возвращалась клиенту.
3.3 Использование в Рамках третьих сторон
Сторонние платформы обычно предоставляют объекты запроса, которые можно получить из параметров GET, POST (например, Laravel).
// $params = $request - > query (); // Get GET parameters $params = $request - > request - > all (); // Get POST parameters // Validation (if the validation fails, an exception is thrown) Validation::validate($params, [ // The validation rules are omitted here ]);
4. Подробное использование
4.1 Проверка целочисленных параметров
Все целочисленные валидаторы начинаются с “Int” для проверки целочисленных значений (например 123
) Или целочисленные строки (например, "123"
) Другие типы данных не совпадают.
"size" => "IntGeLe:1,100"
Эта проверка требует, чтобы параметр “размер” был целым числом и был больше или равен 1, меньше или равен 100.
Полный список целочисленных валидаторов приведен в Приложении A. 1.
4.2 Проверка параметров с плавающей запятой
Все валидаторы с плавающей запятой начинаются с “Float” для проверки значений с плавающей запятой (например 1.0
Строки с плавающей запятой (например, "1.0"
Целочисленные значения (например 123
) Или целочисленные строки (например, "123"
) Другие типы данных не совпадают.
"height" => "FloatGeLe:0.0,100.0"
Эта проверка требует, чтобы параметр “высота” был числом с плавающей запятой и был больше или равен 0, меньше или равен 100,0.
Полный список валидаторов с плавающей запятой приведен в Приложении A. 2.
4.3 Проверка параметров типа bool
Существует только два валидатора bool:
- Книга: Юридическое значение:
истина
,ложь
,"истина"
,"ложь"
(Строки игнорируют регистр). - Книга умная: Юридическое значение:
истина
,ложь
,"истина"
,"ложь"
,1
,0
,"1"
,"0"
,"да"
,"нет"
,"y"
,"n"
(Строки игнорируют регистр)
пример
"accept" => "BoolSmart"
Полный список валидаторов bool приведен в Приложении A. 3.
4.4 Проверка параметров строки
Валидаторы строк не все начинаются с “Str”. Принимайте только строковые данные, другие типы данных не совпадают.
Пример 1:
"name" => "StrLenGeLe:2,20"
Для этой проверки требуется, чтобы параметр “имя” был строкой длиной от 2 до 20 (используется длина строки). mb_strlen()
Для вычисления.
Пример 2:
"comment" => "ByteLenLe:1048576"
Эта проверка требует, чтобы параметр “комментарий” был строкой длиной в байт, не превышающей 1048576. strlen()
Для вычисления.
Пример 3:
"email" => "Email"
Для этой проверки требуется, чтобы параметр “электронная почта” был действительным адресом электронной почты.
Пример 4 (Проверка регулярных выражений):
"phone" => "Regexp:/^1(3[0-9]|4[579]|5[0-35-9]|7[0135678]|8[0-9]|66|9[89])\d{8}$/"
Для этой проверки требуется, чтобы параметр “телефон” был законным номером телефона.
Вопрос о том, какие специальные символы в регулярных выражениях необходимо экранировать, заключается в простом использовании preg_match()
Проверка функций хороша, например:
preg_match('/^string$/', $string);
Затем поставьте два. '/'
Число и его средняя часть копируются и помещаются в Регулярное выражение:
Позже, дополнительное экранирование не требуется, даже если оно есть в обычном. '|'
Этот специальный символ не нуждается в переопределении.
Полный список валидаторов строк приведен в Приложении A. 4.
4.5 Проверка параметров массива, объекта, файла, даты и времени
Ссылка на Приложение A. 5-A. 8
4.6 Последовательный верификатор (с)
В правиле может быть несколько последовательных валидаторов, и они являются отношениями “И”, такими как:
"file" => "FileMaxSize:10m|FileImage"
Для этой проверки требуется, чтобы параметр “файл” был файлом изображения и чтобы размер файла не превышал 10 м.
4.7 Необходимый Верификатор
- Требуемый валидатор требует, чтобы параметры существовали, и их значения не могут быть
null
(Это значение PHPnull
, а не строка “null” (значение параметра)null
Эквивалентно отсутствию параметров. - Если последовательно используется несколько валидаторов, Требуемый валидатор должен предшествовать другим валидаторам.
- Если существует условный валидатор, Обязательное должно быть объединено за условным валидатором.
- Если в правилах проверки нет требований, проверка выполняется только при наличии параметров, и сбой проверки вызывает исключение; если параметры не существуют, то проверка не выполняется (эквивалентно пропуску проверки).
Пример:
"size" => "Required|StrIn:small,middle,large"
Эта проверка требует, чтобы параметр “размер” должен быть “маленьким”, “средним” или “большим” в строке.
4.8 Игнорировать все необходимые валидаторы
Например, при создании пользователя необходимо указать имя, пол и возраст; но при обновлении информации о пользователе необязательно предоставлять всю информацию, какая информация предоставляется для обновления какой информации.
$validations = [ "name" => "Required|StrLenGeLe:2,20", "sex" => "Required|IntIn:0,1", "age" => "Required|IntGeLe:1,200", ]; $userInfo = [ "name" => "tom", "sex" => "0", "age" => "10", ]; Validation:: validate ($userInfo, $validations); validation when creating users Unset ($userInfo ["age"]); //Delete age field Validation:: validate ($userInfo, $validations, true); //Update user information validation
Обратите внимание на последнюю строку приведенного выше кода: validate()
Третий параметр функции равен true, что означает, что все необходимые валидаторы игнорируются.
Таким образом, нам нужно только написать правило проверки, которое можно использовать для одновременного создания пользователя и обновления информации о пользователе.
Проверка 4.9 Вложенных параметров
В следующем примере показана проверка вложенных параметров, содержащих массивы и объекты:
$params = [ "comments" => [ [ "title" => "title 1", "content" => "content 1", ], [ "title" => "title 1", "content" => "content 1", ], [ "title" => "title 1", "content" => "content 1", ], ] ]; $validations = [ "comments[*].title" => "Required|StrLenGeLe:2,50", "comments[*].content" => "Required|StrLenGeLe:2,500", ]; Validation::validate($params, $validations);
4.10 Верификатор Условных суждений
Все условные валидаторы начинаются с “Если”.
Например, если вы хотите набрать группу моделей, требования к мужчинам более 180, требования к женщинам более 170, проверка может быть написана следующим образом:
$validations = [ "sex" => "StrIn:male,female", "height" => [ "IfStrEq:sex,male|IntGe:180", "IfStrEq:sex,female|IntGe:170", ], ];
Правила проверки высоты параметра различаются, когда значение пола параметра отличается.
Полный список условных валидаторов приведен в Приложении A. 9.
4.11 Правила проверки Параллельных (или)
Можно объединить несколько правил проверки, и они представляют собой отношения “или”, такие как
"type" => [ "StrIn:small,middle,large", "IntIn:1,2,3", ]
Для приведенной выше проверки требуется, чтобы параметр “тип” был либо строкой “маленький”, “средний” или “большой”, либо целым числом 1, 2 или 3.
Правила параллельной проверки не являются простой связью “или”. Конкретный процесс проверки заключается в следующем:
- Эти правила проверяются последовательно, и если проходит одно правило проверки, параметр проверяется.
- Если все правила проверки игнорируются (если условие валидатора If не выполняется, или если нет требуемого валидатора, и параметр не существует, или если существует 0 правил проверки), проверка параметра также считается успешной.
- Если ни одно из вышеперечисленных условий не выполняется, проверка параметров завершается неудачно.
Полностью разобраться в этих правилах непросто, поэтому не рекомендуется использовать правила параллельной проверки и стараться не разрабатывать параметры, требующие такой проверки.
4.12 При Особых Значениях null, “”,0,Проблема false
Эти специальные значения не эквивалентны. Они имеют разные типы данных (для проверки требуются разные валидаторы).:
""
Это струна.0
Это целое число.ложь
Это тип була.null
В PHP он пуст. Это имеет особое значение в этом инструменте.
Если значение параметра равно null
Если параметр не существует, инструмент будет считать его несуществующим.
Например, следующие два массива эквивалентны этому инструменту.
$params = [ "name" => "hello", ];
и
$params = [ "name" => "hello", "comment" => null, ];
Это равносильно.
4.13 О связи между основными типами данных и строками
Для следующих URL-адресов
http://abc.com/index.php?p1=&&p2=hello&&p3=123
Мы получим массив параметров:
$params = [ "p1" => "", "p2" => "hello", "p3" => "123", ];
Будьте осторожны :
- Значение параметра “p1” является пустой строкой
""
, а неnull
。 - Значение параметра “p3” представляет собой строку
"123"
Не целое число123
。 - HTTP-запросы в режиме GET не могут быть переданы
null
Значение.
Все валидаторы этого инструмента имеют Сильный тип , “Int” “Проверка целых чисел”, – сказал Float. “Проверка типа с плавающей запятой,” Str* “Проверка типа строки, тип данных не совпадает, проверка не проходит. Но строковый тип является исключением.
Из-за обычных HTTP-запросов все основные типы данных в конечном итоге будут преобразованы в строки, поэтому:
- целое число
123
И строка"123"
Все они могут быть проверены с помощью верификатора “Int”. - поплавок
123.0
И строка"123.0"
Все может быть проверено с помощью верификатора “Float”. - Введите bool
true
И строка"true"
Все они могут быть проверены с помощью верификатора Bool. - однако
null
Значения и строки"null"
Никогда не эквивалентны, Строка"null"
Это просто простые строки.
4.14 Вывод Текста Пользовательской Информации Об Ошибках
Если проверка параметров завершается неудачно, метод Validation::validate()
выдает исключение, содержащее текст, описывающий сообщение об ошибке, которое не удалось проверить.
Но этот текст описания может быть не очень удобным для пользователя, и мы можем настроить его с помощью двух псевдо-валидаторов:
Псевдоним
Используется для настройки имен параметров (это имя будет объединено с шаблоном внутренней информации об ошибке для создания окончательного текста описания информации об ошибке)>>>
Используется для настройки текста описания ошибки (этот текст полностью заменит текст описания ошибки, созданный шаблоном).
Посмотрите на следующие примеры:
$params = [ "title" => "a", ]; Validation::validate($params, [ "title" => "Required|StrLenGeLe:2,50", ]) The error describing // throwing an exception is that the "title" length must be between 2 and 50 Validation::validate($params, [ "Title" => "Required | StrLenGeLe: 2,50 | Alias: Title", // Custom parameter name ]) The error description of // throwing an exception is that the length of the title must be between 2 and 50. Validation::validate($params, [ "Title" => "Required | StrLenGeLe: 2,50 |>: The length of the title should be between 2 and 50", // Custom error message description text ]) The error description of // throwing an exception is that the title length should be between 2 and 50
Более подробную информацию см. в Приложении A. 10
4.15 Интернационализация
Начиная с версии 0.4:
- Используйте новые статические переменные-члены
$langCode2ErrorTemplates
Основная цель перевода “шаблона сообщения об ошибке” – упростить формат (благодаря рекомендации @gitHusband). - Старые таблицы перевода
$langCode Для Шаблонов Ошибок
Он по-прежнему действителен, и существующий код не нуждается в изменении (см. Следующий раздел). Если и старая, и новая таблицы перевода предоставляются одновременно, предпочтение будет отдаваться новым таблицам, а старые таблицы больше использоваться не будут.
Для поддержки интернационализации вам необходимо настроить класс, наследование \Webgeekers\Проверка\Проверка
Перегрузить две статические переменные-члены:
$langCode2ErrorTemplates
Таблица сравнения переводов, используемая для предоставления “шаблона сообщения об ошибке”. Полный список шаблонов сообщений об ошибках можно найти в\WebGeeker\Проверка\Проверка::$errortemplate
Найти в переменных-членах$$langCode Для переводов
Используется для указания “имени пользовательского параметра” (поПсевдоним
Указать) и “Текст описания пользовательской ошибки” (по>>>
Указано) таблица управления переводом.
Ниже приведен пример класса:
class MyValidation extends Validation { // Translation Reference Table of "Error Tip Information Template" protected static $langCodeToErrorTemplates = [ "zh-tw" => [ 'Int'=>', {param} must be an integer', // 'IntGt'=>'{param} must be greater than {min}'. 'Str'=>'{{param}} must be a string'. ], "en-us" => [ 'Int' => '{{param}} must be an integer', 'IntGt' => '{{param}} must be greater than {{min}}', 'Str' => '{{param}} must be a string', ], ]; // Text Translation Reference Table protected static $langCodeToTranslations = [ "zh-tw" => [ "Variable"=> "Variable", /// "Variables must be integers"=> "Variables must be integers", // ], "en-us" => [ "Variables" => "Variables". "Variables must be integers" => "variable must be an integer". ], ]; }
Будьте осторожны:
- Языковые коды чувствительны к регистру. Рекомендуется использовать все строчные буквы, такие как “zh-cn” и “en-us”.
- Название кода языка настраивается, и вы можете назвать его в любом месте, например “abc” (рекомендуется использовать стандартный код языка).
Используйте этот класс Моя проверка
, чтобы убедиться, что вы можете выполнить перевод текста.
MyValidation:: setLangCode ("zh-tw"); // Setting Language Code MyValidation::validate(["var" => 1.0], [ "Var"=> "Int", /// neither Alias nor ">, will only translate the error message template (corresponding to line 1). ]); // throws an exception: "var" must be an integer MyValidation::validate(["var" => 1.0], [ "Var" => "Int | Alias: Variables", // Alias, in addition to translation error message template, but also translate parameter name (corresponding line) ]); // An exception is thrown: "Variables" must be integers MyValidation::validate(["var" => 1.0], [ "Var" => "Int |>: Variables must be integers", // You >, which translates custom error description text (corresponding line) ]); // throws exceptions: variables must be integers
Если указан неверный код языка или переведенный текст не найден, то исходный текст не переводится и не выводится.
4.16 Интернационализация (до версии 0.4)
(Если вы используете версию 0.4 и более поздние версии, рекомендуется использовать новую схему интернационализации (см. предыдущий раздел), которая является более краткой.) 。
Для поддержки интернационализации вам необходимо настроить класс, наследование \Webgeekers\Проверка\Проверка
Перегрузить две статические переменные-члены:
$$langCode Для шаблонов ошибок
Таблица сравнения переводов, используемая для предоставления “шаблона сообщения об ошибке”. Полный список шаблонов сообщений об ошибках можно найти в\WebGeeker\Проверка\Проверка::$errortemplate
Найти в переменных-членах$$langCode Для переводов
Используется для указания “имени пользовательского параметра” (поПсевдоним
Указать) и “Текст описания пользовательской ошибки” (по>>>
Указано) таблица управления переводом.
Ниже приведен пример класса:
class MyValidation extends Validation { // Translation Reference Table of "Error Tip Information Template" protected static $langCodeToErrorTemplates = [ "zh-tw" => [ "{param}" must be an integer "=>"{param}"must be an integer",// "{param}" must be a string "=>" {param}"must be a string". ], "en-us" => [ "{param}" must be an integer "=>" {param}} must be an integer ". "{param}" must be a string "=>" {param} must be a string ". ], ]; // Text Translation Reference Table protected static $langCodeToTranslations = [ "zh-tw" => [ "Variable"=> "Variable", /// "Variables must be integers"=> "Variables must be integers", // ], "en-us" => [ "Variables" => "Variables". "Variables must be integers" => "variable must be an integer". ], ]; }
Будьте осторожны:
- Языковые коды чувствительны к регистру. Рекомендуется использовать все строчные буквы, такие как “zh-cn” и “en-us”.
- Название кода языка настраивается, и вы можете назвать его в любом месте, например “abc” (рекомендуется использовать стандартный код языка).
Используйте этот класс Моя проверка
, чтобы убедиться, что вы можете выполнить перевод текста.
MyValidation:: setLangCode ("zh-tw"); // Setting Language Code MyValidation::validate(["var" => 1.0], [ "Var"=> "Int", /// neither Alias nor ">, will only translate the error message template (corresponding to line 1). ]); // throws an exception: "var" must be an integer MyValidation::validate(["var" => 1.0], [ "Var" => "Int | Alias: Variables", // Alias, in addition to translation error message template, but also translate parameter name (corresponding line) ]); // An exception is thrown: "Variables" must be integers MyValidation::validate(["var" => 1.0], [ "Var" => "Int |>: Variables must be integers", // You >, which translates custom error description text (corresponding line) ]); // throws exceptions: variables must be integers
Если указан неверный код языка или переведенный текст не найден, то исходный текст не переводится и не выводится.
Приложение А – Список проверяющих
A. 1 целое число
Все целочисленные валидаторы начинаются с “Int”.
Инт | “{{param}}” должно быть целым числом | Инт |
ИнтЕк:100 | “{param}” должно быть равно {значению}} | ИнтЕк |
Int Gt:100 | “{param}” должно быть больше, чем {min}} | Int Gt |
В:100 | “{param}” должно быть больше или равно {min}} | В |
Международный:100 | “{param}” должно быть меньше {max}} | ИнтЛт |
Информация:100 | “{param}” должно быть меньше или равно {max}} | Intel |
Int Gt Lt:1100 | “{param}” должно быть больше {min} и меньше {max}} | Целостность |
Целое число:1100 | “{param}” должно быть больше или равно {min}} меньше или равно {max}} | Целое число |
Всего:1100 | “{param}” должно быть больше {min} и меньше {max}} | Подзаголовок |
Целое число:1100 | “{param}” должно быть больше или равно {min}} меньше {max}} | IntGeLt |
ИнтИн:2,3,5,7,11 | “{param}” может принимать только следующие значения: {{Список значений}} | В жестяной |
Int Не входит:2,3,5,7,11 | “{param}” не может принимать эти значения: {{Список значений}} | Намерение |
A. 2 Тип с Плавающей Запятой
Double всегда используется для внутренней обработки.
Поплавок | “{{param}}” должно быть числом с плавающей запятой | Поплавок |
Плавающий Gt:1,0 | “{param}” должно быть больше, чем {min}} | Поплавковый Gt |
Кадры:1.0 | “{param}” должно быть больше или равно {min}} | Метраж |
Плавучесть:1,0 | “{param}” должно быть меньше {max}} | Поплавок |
Поплавок:1,0 | “{param}” должно быть меньше или равно {max}} | Поплавок |
Плавающий Gt Lt:0,1.0 | “{param}” должно быть больше {min} и меньше {max}} | Поплавок Gt Lt |
Флотгеле:0,1.0 | “{param}” должно быть больше или равно {min}} меньше или равно {max}} | Флотгеле |
Плавучесть:0,1.0 | “{param}” должно быть больше {min} и меньше {max}} | Поплавок |
ФлотгЕлЬт:0,1.0 | “{param}” должно быть больше или равно {min}} меньше {max}} | ФлотгЕлЬт |
A. 3 тип bool
Тип bool | Юридическое значение:истина, ложь, “истина”, “ложь”(игнорировать регистр) | Тип bool |
Книжный магазин | Юридическое значение:истина, ложь, “истина”, “ложь”, 1, 0, “1”, “0”, “да”, “нет”, “y”, “n”(игнорирование) | Книжный магазин |
A. 4 Строковый тип
Ул | “{{param}}” должно быть строкой | Ул |
StrEq:abc | “{param}” должно быть равно “{значение}” | StrEq |
Streq:abc | “{param}” должно быть равно “{значение}” (игнорируя регистр) | СтрЕкИ |
Стерн:abc | “{param}” не может быть равно “{значение}” | СтрНе |
СтрНеЙ:азбука | “{param}” не может быть равно “{значению}” (игнорируя регистр) | СтрНеЙ |
Строка:abc,def,g | “{param}” может принимать только следующие значения: {{Список значений}} | Строка |
Строка:abc,def,g | “{param}” может принимать только следующие значения: {{Список значений} (игнорируя регистр) | СтрИнИ |
Str Не в:abc,def,g | “{param}” не может принимать эти значения: {{Список значений}} | СтрНотИн |
СтрНотИнИ:abc,def,g | “{param}” не может принимать эти значения: {{Список значений} (игнорируя регистр) | СтрНотИнИ |
СтрЛен:8 | Длина {param} должна быть равна {длине} | СтрЛен |
StrLenGe:8 | Длина {param} должна быть больше или равна {min} | Странный |
StrLen Le:8 | Длина {param} должна быть меньше или равна {max} | StrLenLe |
Штренгеле:6,8 | Длина {param} должна быть между {min} – {max} | Странно |
Байт Len:8 | Длина {param} должна быть равна {длине}. | Байтелен |
БайтЛенДж:8 | длина” {param} ” (байт) должна быть больше или равна {min}} | Бутилен |
Количество участников:8 | длина” {param} ” (байт) должна быть меньше или равна {max}} | Бутилен |
БытеЛенГеЛе:6,8 | Длина {param} должна находиться в диапазоне {min} – {max}. | БытеЛенГеЛе |
Буквы | “{param}” может содержать только буквы | Буквы |
Алфавит | Те же Буквы | Алфавит |
Числа | “{param}” может быть только чистым числом | Числа |
Цифры | Те Же Цифры | Цифры |
Буквы Цифры | “{param}” может содержать только буквы и цифры | Буквы Цифры |
Числовой | “{{param}}” должно быть значением. Обычно используется для обработки больших чисел (числа, выходящие за пределы диапазона двойного представления, обычно представлены строками) (обработка больших чисел еще не реализована), если число находится в нормальном диапазоне, вы можете использовать’Int ‘ или ‘Float’ для обнаружения. | Числовой |
Имя переменной | “{param}” может содержать только буквы, цифры и символы подчеркивания, начинающиеся с букв или символов подчеркивания | Имя переменной |
Электронная почта | “{param}” должно быть законным электронным письмом | Электронная почта |
URL-адрес | “{{param}}” должен быть действительным URL-адресом | URL-адрес |
Ip | “{{param}}” должен быть законным IP-адресом | Ip |
Мак | “{param}” должен быть действительным MAC-адресом | Мак |
Регулярное выражение:/^abc$/ | Сопоставление Регулярных Выражений Perl | Регулярное выражение |
A. 5 Тип массива
Арр | “{{param}}” должен быть массивом | Арр |
Арлен:5 | Длина массива {param} должна быть равна {длина} | Арлен |
Организуйте:1 | Длина массива {param} должна быть больше или равна {min} | Организованный |
АррЛенЛе:9 | Длина массива {param} должна быть меньше или равна {max} | Арлин |
Арленгеле:1,9 | Степень длинного массива {param} должна находиться в диапазоне от {min} до {max}. | Арленгеле |
A. 6 Тип объекта
Obj | “{{param}}” должен быть объектом | Obj |
A. 7 Тип файла
Файл | “{{param}}” должен быть файлом | Файл |
Размер файла:10 МБ | “{param}” должен быть файлом, и размер файла не должен превышать {размер}” | Размер файла |
Размер файла:100 кб | “{param}” должен быть файлом, размер которого не меньше {size}” | Размер файла |
Изображение файла | “{{param}}” должно быть изображением | Изображение файла |
Файл Видео | “{{param}}” должен быть видеофайлом | Файл Видео |
Файл Аудио | “{{param}}” должен быть аудиофайлом | Файл Аудио |
Время файла:mpeg,jpeg,png | “{param}” должен быть файлом следующих типов MIME: {mimes}} | Время создания файла |
A. 8 Тип даты и времени
Дата | “{param}” должно соответствовать формату даты ГГГГ-ММ-ДД | Дата |
Дата:2017-04-13 | “{param}” не должно предшествовать {из}}” | Дата из |
Дата:2017-04-13 | “{param}” должно быть не позднее, чем {до}}” | дата |
Дата начала:2017-04-13,2017-04-13 | “{param}” должно быть между {от}} ~ {до}} | Дата От До |
Дата и время | “{param}” должно соответствовать формату даты и времени ГГГГ-ММ-ДД ЧЧ:мм:сс | Дата и время |
Дата:2017-04-13 12:00:00 | “{param}” не должно предшествовать {из}}” | Дата и время из |
Дата и время:2017-04-13 12:00:00 | “{param}” должно предшествовать {to}}” | Дата Время До |
Дата И Время От До:2017-04-13 12:00:00,2017-04-13 12:00:00 | “{param}” должно быть между {от}} ~ {до}} | Дата И Время От До |
A. 9 Тип Условного Суждения
В одном правиле проверки условный валидатор должен предшествовать другим валидаторам, и несколько условных валидаторов могут быть подключены последовательно.
Обратите внимание, что “условием” в условном суждении обычно является обнаружение Другого параметра Значение текущего параметра проверяется другими валидаторами, объединенными за валидатором условного суждения.
Если:выбрано | Если значение параметра “выбрано” равно 1, true, “1”, “истина”, ” да ” или ” да ” (строка игнорирует регистр) | Если |
Если нет:выбрано | Если значение параметра “выбрано” равно 0, false, “0”, “ложь”, ” Нет ” или ” нет ” (строка игнорирует регистр) | Если нет |
Если Верно:выбрано | Если значение параметра “выбрано” равно true или true'(игнорируется регистр) | Если это правда |
ИфФальс:выбран | Если значение параметра “выбрано” равно false или false'(игнорируется регистр) | ИфФалсе |
Если существует:var | Если параметр “var” существует | Если существует |
Если не существует:var | Если параметр “var” не существует | Если не существует |
Если Int Eq:var,1 | если (вар) | IfIntEq |
Если в:var,2 | Если). Особенно важно отметить, что если тип данных условного параметра var не совпадает, то условие If допустимо, в то время как другие условия IfIntXx недопустимы, когда тип данных условного параметра var не совпадает. | Если в |
IfIntGt:var,0 | если (var > 0) | IfIntGt |
IfIntLt:вар,1 | если (var < 0) | Если нет |
IfIntGe:var,6 | если (вар) | Если бы |
IfIntLe:var,8 | если (вар) | Ифинтл |
Если Int В:var,2,3,5,7 | если (in_array(var, [2,3,5,7])) | ИфИнтИн |
ИфИнтНотИн:вар,2,3,5,7 | если (!in_array(var, [2,3,5,7])) | Если нет, то |
Если StrEq:вар,жду | если (вар) | IfStrEq |
IfStrNe:var,редактирование | Если). Особенно важно отметить, что если тип данных условного параметра var не совпадает, то условие If допустимо, в то время как другие условия IfStrXx недопустимы, когда тип данных условного параметра var не совпадает. | IfStrNe |
IfStrGt:вар,а | если (var > ‘a’) | IfStrGt |
IfStrLt:var,z | если (var < ‘z’) | IfStrLt |
IfStrGe:вар,А | если (вар) | IfStrGe |
IfStrLe:var,Z | если (вар) | IfStrLe |
Строка If:var,нормально,предупреждение,ошибка | если (in_array(var, [“нормально”, “предупреждение”, “ошибка”], true)) | Если Строка |
IfStrNotIn:var,предупреждение,ошибка | если (!in_array(var, [‘предупреждение’, ‘ошибка’], true)) | После полудня |
A. 10 Другие Средства Проверки
Требуемый | Параметры, подлежащие проверке, необходимы. Если валидатор находится последовательно, он должен быть первым валидатором в дополнение к условному валидатору. | Требуемый |
Псевдоним: имя параметра | Имя параметра в тексте пользовательского запроса на ошибку (должно быть последним средством проверки) | Псевдоним |
>: Это пользовательский текст запроса об ошибке | Пользовательский текст запроса на ошибку (альтернатива валидатору псевдонима, который должен быть последним валидатором) | >>> |
функция() {} | Этот механизм пока не предусмотрен, потому что, если вы столкнетесь со сложной проверкой параметров, которую этот инструмент не поддерживает, вы можете написать PHP-код для его прямой проверки, и вам не нужно будет проверять его снова с помощью этого инструмента (в противном случае вы снимете штаны и перднете, и больше ничего не сделаете). | Пользовательские функции PHP |