laraantunes / validare
一个简单易用的验证库。
1.0.1
2019-04-09 00:30 UTC
Requires (Dev)
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-11 04:28:08 UTC
README
一个简单易用的验证库。
安装
composer require laraantunes/validare
基本用法
创建一个类,并使用 \Validare\Bind
特性,通过 validate() 方法添加规则
class MyClass { use \Validare\Bind; public $myField; /** * Validare includes the rules() method that is called * before the proper validation to bind the field * validations */ public function rules() { $this->validate('myField', \Validare\Rule::REQUIRED); } } $myObj = new MyClass(); echo $myObj->valid(); // It'll return false // It'll return an array with all the validation errors found var_dump($myObj->validationErrors());
validate() 方法
valid()
方法是 validate()
的别名,没有参数。这样,它会为对象运行验证。如果以参数调用 validate()
,则会为作为第一个参数传递的字段添加规则,其他参数作为规则
// Adds a REQUIRED validation for myField: $myObj->validate('myField', \Validare\Rule::REQUIRED); // You may pass more than one rule when calling validate()! $myObj->validate('myField', [\Validare\Rule::LESS_OR_EQUALS => 5], [\Validare\Rule::MORE => 3]); // When passing a value that must be compared, pass the rule as an array: $myObj->validate('myField', [\Validare\Rule::LENGTH => 4]); // You need to use the full array syntax if you need to pass a custom rule name for errors: $myObj->validate('myField', [ 'rule' => \Validare\Rule::MAX_LENGTH, 'compare' => 5, 'ruleName' => 'My Rule Name', ]); // You may also pass closures as rules! $myObj->validate('myField', function($value){ return $value->value == 5; }); // And even with 'use' clause: $myObj->validate('myField', function($value) use ($customValue){ return $value->value == $customValue; }); // And if you need to handle all the \Validare\Rule object, you may pass a new object: $myObj->validate('myField', new \Validare\Rule(1, \Validare\Rule::EQUALS, 1)); // if you need to use a callback after validate, use a \Validate\Rule object: $myObj->validate( 'myField', new \Validare\Rule( $value, \Validare\Rule::IS_STRING, null, null, function($success){ if ($success) { // Do something! } } ) );
默认规则
Validare 包含许多默认的有用规则,还有更多即将到来。所有这些规则都作为 \Validare\Rule
类的常量有效
- REQUIRED
- POSITIVE
- NEGATIVE
- LENGTH
- MIN_LENGTH
- MAX_LENGTH
- MORE
- LESS
- MORE_OR_EQUALS
- LESS_OR_EQUALS
- EQUALS
- NOT_EQUALS
- IS_ARRAY
- IS_STRING
- IS_NUMERIC
- IS_A
- COUNT_EQUALS
- COUNT_MORE
- COUNT_LESS
- COUNT_MORE_EQUALS
- COUNT_LESS_EQUALS
- HAS_ATTRIBUTE
- HAS_ATTRIBUTE_VALUE
Assert 类
如果您需要验证特定的值,可以使用 \Validare\Assert
类。它有两个基本方法,一个魔法方法可以动态调用默认规则,还有一个 value()
方法,它使用与 Validare\Bind::validate()
方法相同的语法进行验证
// Magic Calls for default rules: \Validare\Assert::required('my test value'); // Returns true \Validare\Assert::length('test', 5); // Returns false // Default assert (rules may be called as the same as \Validare\Bind::validate() method): \Validare\Assert::value('Valid', \Validare\Rule::REQUIRED); // Returns true \Validare\Assert::value( 2, [\Validare\Rule::LESS_OR_EQUALS => 5], [\Validare\Rule::MORE => 3] ); // Returns false // If you need to check if an object has an attribute defined, use 'has_attribute' rule: \Validare\Assert::has_attribute($obj, 'test'); // And if you need to check a value of an object, use 'has_attribute_value' rule, with an // array on compareValue: \Validare\Assert::has_attribute_value($obj, ['test' => 'wololo']);
测试
测试位于 test/
目录,使用 PHPUnit 进行。
贡献
欢迎创建包含新规则、错误修复和建议的拉取请求!<3