windwalker/validator

Windwalker Validator 包

安装: 724

依赖者: 0

建议者: 1

安全: 0

星标: 2

关注者: 3

分支: 0

开放问题: 0

类型:windwalker-package

3.5.23 2019-10-26 15:42 UTC

README

Windwalker Validator 是一个简单的接口,帮助验证字符串。

通过 Composer 安装

将以下内容添加到你的 composer.json 文件的 require 块中。

{
    "require": {
        "windwalker/validator": "~3.0"
    }
}

简单验证流程

use Windwalker\Validator\Rule\EmailValidator;

$validator = new EmailValidator;

$validator->validate('[email protected]'); // bool(true)

$validator->validate('sakura'); // bool(false)

可用的验证规则

  • AlnumValidator
  • BooleanValidator
  • ColorValidator
  • CreditcardValidator
  • EmailValidator
  • EqualsValidator
  • IpValidator
  • NoneValidator
  • PhoneValidator
  • RegexValidator
  • UrlValidator
  • CallbackValidator
  • CompareValidator
  • PhpTypeValidator

Regex 验证器

use Windwalker\Validator\Rule\RegexValidator;

$validator = new RegexValidator('^[a-zA-Z0-9]*$', 'i');

$validator->validate('abc_123:978'); // bool(false)

等于验证器

use Windwalker\Validator\Rule\EqualsValidator;

$validator = new EqualsValidator('ABC');

$validator->validate('ABC'); // bool(true)

严格模式

$validator = new EqualsValidator(123, true);

$validator->validate('123'); // bool(false)

错误信息

$validator->setMessage('This string is not valid');

if (!$validator->validate('sakura'))
{
    throw new \Exception($validator->getError());
}

创建自定义验证器

use Windwalker\Validator\AbstractValidator;

class MyValidator extends AbstractValidator
{
	public function test($string)
	{
		return (bool) strlen($string);
	}
}

$validator = new MyValidator;

$validator->validate('foo');

扩展 Regex 验证器

use Windwalker\Validator\Rule\RegexValidator;

class MyRegexValidator extends RegexValidator
{
	protected $modified = 'i';
	protected $regex = '[a-zA-Z]';
}

组合

匹配所有。

use Windwalker\Validator\ValidatorComposite;

$validator = new ValidatorComposite([
    AlnumValidator::class,
    new PhoneValidator
]);

$validator->validate('1a2b'); // false
$validator->getResults(); // [true, false]

匹配一个。

use Windwalker\Validator\ValidatorComposite;

$validator = new ValidatorComposite([
    AlnumValidator::class,
    new PhoneValidator
])->setMode(ValidatorComposite::MODE_MATCH_ONE);

$validator->validate('1a2b'); // true
$validator->getResults(); // [true, false]

使用方法

$validator->validateOne($value);
$validator->validateAll($value);