laraantunes/validare

一个简单易用的验证库。

1.0.1 2019-04-09 00:30 UTC

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