alexya-framework / validator
Alexya的验证器工具
Requires
- php: >=7.0
This package is not auto-updated.
Last update: 2024-09-14 19:25:45 UTC
README
Alexya的验证器组件
内容
验证器
类 \Alexya\Validator\Validator
提供了验证输入的辅助函数。
您需要实例化一个 Validator
对象,添加要验证的字段,并调用 validate
方法。
实例化验证器对象
构造函数可以接受一个包含 \Alexya\Validator\Ruler
对象的数组作为参数。您也可以使用 addRuler
方法添加新的规则。
示例
<?php $validator = new \Alexya\Validator\Validator([ new \Alexya\Validator\Rulers\StringRuler(), new \Alexya\Validator\Rulers\IntegerRuler() ]); $validator->addRuler(new \Alexya\Validator\Rulers\GenericRuler());
添加字段
要添加字段,请使用接受字段名和其值作为参数的 add
方法,它返回一个类型为 \Alexya\Validator\Field
的对象,该对象是 字段。
验证
一旦添加了所有字段,请使用 validate
方法验证字段。如果发送了字符串作为参数,它将验证具有该名称的字段,如果没有,它将验证所有字段。如果所有字段都成功验证,则返回 true
,否则返回 false
。
getErrors
方法返回一个包含验证错误的数组。
示例
<?php $validator = new \Alexya\Validator\Validator([); $validator->addRuler(new \Alexya\Validator\Rulers\GenericRuler()); $validator->addRuler(new \Alexya\Validator\Rulers\StringRuler()); $validator->add("username", "test") ->addRule("String::required", "Please, enter your username") ->addRule("String::min_length", [3], "Your username can't be less than 3 chars") ->addRule("String::max_length", [20], "Your username can't be more than 20 chars") ->addRule("String::not_contains_chars", ["#$!\\"], "Your password can't contain special chars"); $validator->add("password", "asdf123") ->addRule("String::required", "Please, enter your password") ->addRule("String::min_length", [3], "Your password can't be less than 3 chars"); if($validator->validate()) { echo "All input has been successfully validated" } else { $messages = $validator->getErrors(); echo "Couldn't validate inputs!"; foreach($messages as $message) { echo $message; } }
字段
类 \Alexya\Validator\Field
表示要验证的字段。
实例化字段对象
构造函数接受要验证的字段作为参数。
添加规则
您可以使用接受三个参数的 addRule
方法添加验证规则
- 一个字符串作为规则名称。
- 一个包含要发送给规则的参数的数组(可以省略)。
- 一个字符串作为字段不满足规则时的错误信息。
此方法返回此对象的实例,以便链式调用。
验证字段
一旦添加了所有规则,请使用 validate
方法验证字段。它接受包含验证规则的规则对象作为参数,如果验证成功则返回 true
,如果失败则返回 false
。
getErrors
方法返回一个包含验证错误的数组。
示例
<?php $field = new Field("test"); $field->addRule("String::not_empty", "The string can't be empty!"); ->addRule("String::min_length", [4], "The string can't be shorter than 4 chars!"); ->addRule("String::max_length", [20], "The string can't be longer than 20 chars!"); ->addRule("String::matches", ["([0-9A-Z]*)"], "The string must have only numbers and letters!"); if(!$field->validate()) { echo implode("\n", $field->getErrors()); }
规则
类 \Alexya\Validator\Ruler
是所有规则的基类。
规则是一个包含验证输入方法的对象。
字符串规则
类 \Alexya\Validator\Rulers\StringRuler
包含字符串的验证规则。
验证规则
所有规则都可以以 String::
开头。
示例
<?php $ruler = new \Alexya\Validator\Rulers\StringRuler(); var_dump($ruler->validate("String::not_empty", "")); // bool(false); var_dump($ruler->validate("min_length", "test", [4])); // bool(true); var_dump($ruler->validate("String::is_ip", "127.0.0.1")); // bool(true);
整数规则
类 \Alexya\Validator\Rulers\IntegerRuler
包含整数的验证规则。
验证规则
所有规则都可以以 Integer::
开头。
示例
<?php $ruler = new \Alexya\Validator\Rulers\IntegerRuler(); var_dump($ruler->validate("Integer::less_than", 20, [40])); // bool(false); var_dump($ruler->validate("more_than", 30, [4])); // bool(true); var_dump($ruler->validate("Integer::between", 40, [4, 400])); // bool(true);