array/validation

使用PHP的本地过滤器验证器进行简单验证。

1.6 2016-09-15 01:20 UTC

This package is auto-updated.

Last update: 2024-08-28 11:30:18 UTC


README

Build Status Latest Stable Version

葡萄牙语文档/葡萄牙语文档

数组验证

这是一个简单的数组验证器,它使用PHP的本地过滤器验证器。

安装

composer require array/validation

使用

方法

  • setFields(array $fieldsRules)

它添加可选字段进行过滤/验证。

  • setRequiredFields(array $requiredFieldsRules)

它添加必填字段进行过滤/验证。

  • validate(array $input)

它验证输入数组。如果验证不满足,则抛出异常。

  • isValid(array $input)

它验证输入数组。如果输入数组有效,则返回true,否则返回false

  • removeOnly(array $fieldsToRemove)

它移除不在过滤/验证规则中的字段。

  • getValidArray()

它返回一个包含过滤/验证数据的数组。

  • getMessages()

它返回一个包含验证信息的数组。应在调用isValid之后调用此方法。

验证必填字段

<?php

use Validation\SimpleArray;

$rules = [
    'name' => FILTER_SANITIZE_STRING,
    'age' => FILTER_VALIDATE_INT,
];

$arrayToValidate = [
    'name' => 'Diogo Alexsander',
    'age' => 26,
];

$validator = new SimpleArray();
$validator
    ->setRequiredFields($rules)
    ->validate($arrayToValidate);

$data = $validator->getValidArray();

验证可选字段

<?php

use Validation\SimpleArray;

$rules = [
    'name' => FILTER_SANITIZE_STRING,
    'age' => FILTER_VALIDATE_INT,
];

$arrayToValidate = [
    'name' => 'Diogo Alexsander',
];

$validator = new SimpleArray();
$validator
    ->setFields($rules)
    ->validate($arrayToValidate);

$data = $validator->getValidArray();

验证两者

<?php

use Validation\SimpleArray;

$fieldsRules = [
    'name' => FILTER_SANITIZE_STRING,
    'age' => FILTER_VALIDATE_INT,
];

$requiredFieldsRules = [
    'id' => FILTER_VALIDATE_INT,
];

$arrayToValidate = [
    'id' => 1,
    'name' => 'Diogo Alexsander',
    'age' => 26,
];

$validator = new SimpleArray();
$validator
    ->setFields($fieldsRules)
    ->setRequiredFields($requiredFieldsRules)
    ->validate($arrayToValidate);

$data = $validator->getValidArray();

可以使用removeOnly方法从输入数组中移除一些字段。

如果没有调用,则输入数组中不在过滤/验证规则中的所有其他字段都将被移除。

如果只想从输入数组中移除一些字段,可以通过传递包含要移除的字段的数组来调用removeOnly方法。

注意:如果尝试移除在过滤/验证规则中存在的字段,则会抛出RuntimeException

<?php

use Validation\SimpleArray;

$fieldsRules = [
    'name' => FILTER_SANITIZE_STRING,
    'age' => FILTER_VALIDATE_INT,
];

$requiredFieldsRules = [
    'id' => FILTER_VALIDATE_INT,
];

$arrayToValidate = [
    'id' => 1,
    'name' => 'Diogo Alexsander',
    'age' => 26,
    'email' => 'unwanted',
    'phone' => 'unwanted',
];

$validator = new SimpleArray();
$validator
    ->setFields($fieldsRules)
    ->setRequiredFields($requiredFieldsRules)
    ->validate($arrayToValidate);

$data = $validator->getValidArray(); // It will return only 'id', 'name' and 'age'

$validator->removeOnly(['phone']);
$data = $validator->getValidArray(); // It will return 'id', 'name', 'age' and 'email'

如果不希望验证器在验证不满足时自动抛出异常,可以调用isValid方法而不是validate方法。

之后,可以调用getMessages方法以获取包含验证信息的数组。

示例

<?php

$input = [
    'name' => '<strong>Diogo</strong>',
    'description' => "<b>This is a test</b>, to know more about it <a href='index.phtml'>click here</a>",
    'email' => 'email@domain.com',
    'phone' => '5555555 - test',
];

$rules = [
    'phone' => FILTER_VALIDATE_INT,
    'name' => FILTER_SANITIZE_STRING,
    'description' => FILTER_SANITIZE_STRING
];

$rulesRequired = [
    'id' => FILTER_VALIDATE_INT,
    'code' => FILTER_VALIDATE_INT,
];

$validator = new SimpleArray();
$validator
    ->setFields($rules)
    ->setRequiredFields($rulesRequired);
    
if (!$validator->isValid($input)) {
    $messages = $validator->getMessages();
    foreach ($messages as $message) {
        echo $message, '<br>';
    }
}