corneltek/validationkit

此包的最新版本(1.1.1)没有提供许可证信息。

1.1.1 2013-03-28 13:35 UTC

This package is auto-updated.

Last update: 2024-08-29 03:31:20 UTC


README

验证器

  • ValidationKit\PhoneNumber\TWPhoneNumberValidator
  • ValidationKit\TW\IDNumberValidator
  • ValidationKit\CallbackValidator
  • ValidationKit\ChainedValidator
  • ValidationKit\EmailValidator
  • ValidationKit\PasswordValidation
  • ValidationKit\PatternValidator
  • ValidationKit\RangeValidator
  • ValidationKit\StringLengthValidator
  • ValidationKit\StringValidator

验证器构造函数

ValidationKit 验证器的构造函数原型是

__construct( $options = array() , $msgs = array() );

$msgs() 是一个包含以下内容的关联数组

msg_id => msg_str

对于不同类型的验证消息,每个验证器都为其消息映射提供自定义的 msgid,您可以简单地覆盖消息字典来自定义消息。

以下示例代码显示了消息字典的格式

$validtor = new PasswordValidator(array( /* options */ ), array( 
    'require_digits_error' => 'Please enter digits in your password',
    'require_alpha_error'  => 'Please enter alphabets in your password',
    'max_length_error' => 'The maximum length of password is 24 charactors.'
));

以下列表是默认消息映射

  • 有效
  • 无效

当然,您也可以轻松扩展自定义验证器类中的消息。

在您的验证器中返回无效消息

return $this->invalid('require_digits_error');

在您的验证器中返回有效消息

return $this->valid('require_digits_error');

从验证器获取结果消息

$msgs = $validator->getMessages();
foreach( $msgs as $msgId => $msg ) {
    // $msg => ValidationMessage
}

结果消息是一个 ValidationMessage 对象,ValidationMessage 中有三个类属性

  1. 有效(布尔值)
  2. id(字符串,消息ID)
  3. message(字符串,消息)

EmailValidator

use ValidationKit\EmailValidator;
$validator = new EmailValidator;
if( $validator->validate('foo@foo.com') ) {
    echo "Success!\n";
} else {
    foreach( $validator->getMessages() as $msgId => $msg ) {
        // $msg is a ValidationMessage object, 
        // which supports __toString() convertion.
        echo $msg . "\n";
    }
}

PatternValidator

    use ValidationKit\PatternValidator;
    $validator = new PatternValidator( '#test test test#' );
    $bool = $validator->validate( $value );
    $msgs = $validator->getMessages();

StringLengthValidator

$validator = new ValidationKit\StringLengthValidator(array( 
    'min' => 5, 'max' => 10,
));

StringValidator

    use ValidationKit\StringValidator;
    $validator = new StringValidator(array( 
            'starts_with' => '....' , 
            'ends_with' => ... ,
            'is' => ...,
            'contains' => ...,
            'except' => ...,
        ), array( 
            'invalid' => 'general invalid message',
            'starts_with_error' => 'error message'
        ));
    $bool = $validator->validate( $string );
    $msgs  = $validator->getMessages();
    foreach( $msgs as $msgId => $msg ) {
        echo $msg, "\n";
    }

PasswordValidator

$validator = new ValidationKit\PasswordValidator(array(
    'max_length' => 24,
    'min_length' => 10,
    'require_digits' => true,
    'require_alpha' => true,
), array( 
    'require_digits_error' => 'Please enter digits in your password',
    'require_alpha_error'  => 'Please enter alphabets in your password',
    'max_length_error' => 'The maximum length of password is 24 charactors.'
));

RangeValidator

    use ValidationKit\RangeValidator;
    $validator = new RangeValidator(array(
        'greater_than' => 100,
        'less_than' => 200,
    ));
    $bool = $validator->validate( 200 );

    $validator = new RangeValidator(array( '>' => 10 , '<' => 200 ));
    $bool = $validator->validate( 10.0 );

自定义验证器

要编写自己的验证器,以下是一个验证器类的基本结构

namespace YourApp;
use ValidationKit\Validator;

class YourValidator extends Validator
{
    public function validate($val) 
    {
        return $this->valid();
    }
}

您可以通过定义一个 getDefaultMessages 方法来提供默认的消息字典

namespace YourApp;
use ValidationKit\Validator;

class YourValidator extends Validator
{
    public function getDefaultMessages()
    {
        return array(
            'valid' => 'Its a valid value.',
            'too_large' => 'Your value is too large',
            'too_small' => 'Your value is too small',
        );
    }


    public function validate($val) 
    {
        if( $val > 30 )
            return $this->invalid('too_large');

        if( $val < 10 )
            return $this->invalid('too_small');
        return $this->valid();
    }
}

黑客攻击

安装依赖项

$ composer install --dev

运行单元测试

$ phpunit