PHP code example of shonans / php-validate
1. Go to this page and download the library: Download shonans/php-validate library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once ('vendor/autoload.php' );
shonans / php-validate example snippets
[
['tagId,userId,name,email,freeTime' , '
[
['field' , '
use Shonans \Validate \Validation ;
class SomeController
{
public function demoAction ()
{
$v = Validation::check($_POST,[
['title' , 'min' , 40 ],
['freeTime' , 'number' ],
]);
if ($v->isFail()) {
var_dump($v->getErrors());
var_dump($v->firstError());
}
$safeData = $v->getSafeData();
$db->save($safeData);
}
}
$v = PageRequest::check($_POST);
if ($v->isFail()) {
var_dump($v->getErrors());
var_dump($v->firstError());
}
$safeData = $v->getSafeData();
$db->save($safeData);
class DataModel
{
use \Shonan \Validate \ValidationTrait ;
protected $data = [];
protected $db;
public function load (array $data)
{
$this ->data = $data;
return $this ;
}
public function create ()
{
if ($this ->validate()->isFail()) {
return false ;
}
return $this ->db->insert($this ->getSafeData());
}
}
class UserModel extends DataModel
{
public function rules () : array
{
return [
['username, passwd' , ' [' id', ' number', ' on' => ' update' ], // 仅作用于场景 update
[' createdAt, updatedAt', ' safe'],
];
}
}
// on controller action ...
class UserController
{
// in action
// @api /user/add
public function addAction()
{
$model = new UserModel;
// 载入提交数据并设定场景为: create
$model->load($_POST)->atScene(' create');
if (!$ret = $model->create()) {
exit($model->firstError());
}
echo "add success: userId = $ret";
}
}
$v = Validation::make($_POST,[
['title' , 'min' , 40 ],
['freeTime' , 'number' ],
['title' , 'checkTitle' ],
])
->addValidator('checkTitle' ,function ($title) {
return true ;
}, '{attr} default message!' )
->validate();
['status' , function ($status) {
if ($status > 3 ) {
return true ;
}
return false ;
}]
class AdemoValidator extends \Shonan \Validate \Validator \AbstractValidator
{
public function validate ($value, $data) : bool
{
if ($value == 1 ) {
return true ;
}
return false ;
}
}
['status' , new AdemoValidator()],
use Shonans \Validate \Validation ;
class PageValidation extends Validation
{
public function beforeValidate () : bool
{
return true ;
}
public function afterValidate () : bool
{
return true ;
}
}
use Shonans \Validate \Validation ;
$v = Validation::make(['name' => 'shonan' ], [
['name' , 'string' , 'min' => 3 , 'filter' => 'trim|upper' ]
]);
$v->onBeforeValidate(function (Validation $v) {
return true ;
});
$v->onAfterValidate(function (Validation $v) {
});
$v->validate();
[
'field0,field1,...' , 'validator' , 'arg0' , 'arg1' , ...,
'skipOnEmpty' => 'bool' ,
'msg' => 'string|array' ,
'default' => 'mixed' ,
'on' => 'string|array'
'isEmpty' => 'callback(string|closure)' ,
'when' => 'callback(string|closure)' ,
'filter' => 'callback(string|array|closure)'
]
['page' , 'number' , 'default' => 1 ],
['pageSize' , 'number' , 'default' => 15 ],
['title' , 'customValidator' , 'msg' => '{attr} error msg!' ],
['tagId,title,userId,freeTime' , '
public function rules () : array
{
return [
['title' , 'ate,update' ],
];
}
$valid = ValidationClass::make($_POST)->atScene('update' )->validate();
public function rules () : array
{
return [
['title' , ' }],
];
}
['name' , 'string' ]
['name' , '' string' ]
['name' , 'string' , 'skipOnEmpty' => false ]
['name' , 'string' , 'isEmpty' => function ($value) {
return true or false ;
}]
['users.*.id' , 'each' , 'of \Shonan\Validate\ArrayValueNotExists) {
return true;
}
// your code here ...
}]
['tagId,userId,freeTime' , 'number' , 'filter' => 'int' ],
['field' , 'validator' , 'filter' => 'filter0|filter1...' ],
['field1' , 'validator' , 'filter' => [
'string' ,
'trim' ,
['Class' , 'method' ],
['Object' , 'method' ],
'myFilter' => ['arg1' , 'arg2' ],
function ($val) {
return str_replace(' ' , '' , $val);
},
]],
public function scenarios () : array
{
return [
'create' => ['user' , 'pwd' , 'code' ],
'update' => ['user' , 'pwd' ],
];
}
public function rules () : array
{
return [
['title' , 'ate,update' ],
];
}
$v->setSecne('update' )->validate();
['createdAt, updatedAt' , 'safe' ]
$v = Validation::make($_POST, [
])
->setUploadedFiles($_FILES)
->validate();
[
'goods' => [
'apple' => 34 ,
'pear' => 50 ,
],
]
['goods.pear' , 'max' , 30 ],
[
'goods' => [
'apple' => 34 ,
'pear' => 50 ,
],
'users' => [
['id' => 34 , 'name' => 'tom' ],
['id' => 89 , 'name' => 'john' ],
]
]
['goods.*' , 'each' , 'number' ],
['users.*.id' , 'each' , '
public function setScene (string $scene)
public function atScene (string $scene) // setScene 的别名方法
public function validate (array $onlyChecked = [], $stopOnError = null)
public function addValidator (string $name, \Closure $callback, string $msg = '' )
public function getErrors () : array
[
['name' => 'field1' , 'msg' => 'error Message1' ],
['name' => 'field2' , 'msg' => 'error Message2' ],
...
]
public function firstError ($onlyMsg = true)
public function lastError ($onlyMsg = true)
public function getSafeData () : array |\stdClass
public function val (string $key, $default = null) // getSafe () 的别名方法
public function getValid (string $key, $default = null) // getSafe () 的别名方法
public function getSafe (string $key, $default = null)
public function all () : array
public function getRaw (string $key, $default = null)
bash
composer
public function isFail ()
public function hasError () // isFail () 的别名方法
// 成功通过验证
public function isOk ()
public function isPassed ()