array / validation
使用PHP的本地过滤器验证器进行简单验证。
1.6
2016-09-15 01:20 UTC
Requires (Dev)
README
数组验证
这是一个简单的数组验证器,它使用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>'; } }