Skip to content

Lightweight and feature-rich PHP validation and filtering library. Support scene grouping, pre-filtering, array checking, custom validators, custom messages. Nhẹ lượng thả công năng phong phú PHP nghiệm chứng, lọc kho. Duy trì cảnh tượng phân tổ, trước trí lọc, số tổ kiểm tra, tự định nghĩa nghiệm chứng khí, tự định nghĩa tin tức.

License

Notifications You must be signed in to change notification settings

inhere/php-validate

Repository files navigation

PHP Validate

License Php Version Latest Stable Version Coverage Status Github Actions Status English readme

Một cái ngắn gọn tiểu xảo thả công năng hoàn thiện php nghiệm chứng, lọc kho.

  • Đơn giản phương tiện, duy trì tăng thêm tự định nghĩa nghiệm chứng khí
  • Duy trì trước trí nghiệm chứng kiểm tra, tự định nghĩa như thế nào phán đoán phi không
  • Duy trì đem quy tắc ấn cảnh tượng tiến hành phân tổ thiết trí. Hoặc là bộ phận nghiệm chứng
  • Duy trì tại tiến hành nghiệm chứng trước đối giá trị sử dụng lọc khí tiến hành tinh lọc lọcNội trí lọc khí
  • Duy trì tại tiến hành nghiệm chứng trước trí xử lý cùng từ đứng sau xử lýĐộc lập nghiệm chứng xử lý
  • Duy trì tự định nghĩa mỗi cái nghiệm chứng sai lầm tin tức, tự đoạn phiên dịch, tin tức phiên dịch, duy trì cam chịu giá trị
  • Duy trì cơ bản số tổ kiểm tra, số tổ tử cấp ('goods.apple') giá trị kiểm tra, thông xứng phù tử cấp kiểm tra ('users.*.id' 'goods.*')
  • Phương tiện thu hoạch sai lầm tin tức, nghiệm chứng sau an toàn số liệu thu hoạch ( chỉ biết thu thập có quy tắc kiểm tra quá số liệu )
  • Đã nội trí đại lượng thường dùng nghiệm chứng khíNội trí nghiệm chứng khí
  • Quy tắc thiết trí tham khảoyii,laravel,Respect/Validation
  • Độc lập lọc khíInhere\Validate\Filter\Filtration,Nhưng đơn độc dùng cho số liệu lọc

Hai loại quy tắc phối trí phương thức

validate đồng thời duy trì hai loại quy tắc phối trí phương thức, đối ứng hai loại quy tắc thu thập phân tích sách lược.

Nhiều tự đoạn đơn quy tắc

  • Validation|RuleValidation:Mỗi nội quy tắc trung, cho phép nhiều tự đoạn, nhưng chỉ có thể có một cái nghiệm chứng khí.(Quy tắc phối trí cùng loại với Yii)

Phối trí thí dụ mẫu: (Bổn văn đương thí dụ mẫu đều là loại này)

[
['tagId,userId,name,email,freeTime','required',...],
//......
];

Một chữ độc nhất đoạn nhiều quy tắc

  • FieldValidation:Mỗi nội quy tắc trung, chỉ có thể có một chữ đoạn, nhưng cho phép nhiều nghiệm chứng khí.(Quy tắc phối trí cùng loại với Laravel)
  • FieldValidation:Không duy trì nghiệm chứng khíeach

Phối trí thí dụ mẫu:

[
['field','required|string:5,10|...',...],
//......
]

Càng nhiều phối trí thí dụ mẫu thỉnh xem thêmGiống Laravel giống nhau phối trí

Hạng mục địa chỉ

Trang bị

composer require inhere/php-validate
#or
#composer require inhere/php-validate ^3.0

Chú ý

  • masterChi nhánh là yêu cầuphp8.1+( đề cử sử dụng )
  • 2.xChi nhánh là duy trìphp7.1+,Nhưng là trên cơ bản không hề giữ gìn.
  • 1.xChi nhánh là duy trì php5 số hiệu chi nhánh, nhưng là trên cơ bản không hề giữ gìn.

Lập tức sử dụng

Phương thức 1: Trực tiếp sử dụng loạiValidation

Yêu cầu nhanh chóng giản tiện sử dụng nghiệm chứng khi, nhưng trực tiếp sử dụngInhere\Validate\Validation

useInhere\Validate\Validation;

classSomeController
{
publicfunctiondemoAction()
{
$v=Validation::check($_POST,[
// add rule
['title','min',40],
['freeTime','number'],
]);

if($v->isFail()) {
var_dump($v->getErrors());
var_dump($v->firstError());
}

// $postData = $v->all(); // nguyên thủy số liệu
$safeData=$v->getSafeData();// nghiệm chứng thông qua an toàn số liệu

$db->save($safeData);
}
}

Phương thức 2: Kế thừa loạiValidation

Sáng tạo một cái tân class, cũng kế thừaInhere\Validate\Validation.Dùng cho một cái ( hoặc một loạt tương quan ) thỉnh cầu nghiệm chứng, tương đương với laravel biểu đơn thỉnh cầu nghiệm chứng

Này phương thức là nhất hoàn chỉnh sử dụng phương thức, có thể phối trí quy tắc, thiết trí tự đoạn phiên dịch, thiết trí tự định nghĩa sai lầm tin tức chờ

useInhere\Validate\Validation;

classPageRequestextendsValidation
{
# tiến hành nghiệm chứng trước xử lý, phản hồi false tắc đình chỉ nghiệm chứng, nhưng không có sai lầm tin tức, có thể ở logic trung thuyên chuyển addError gia tăng sai lầm tin tức
publicfunctionbeforeValidate():bool
{
returntrue;
}
# tiến hành nghiệm chứng sau xử lý, nên làm gì làm gì
publicfunctionafterValidate():bool
{
returntrue;
}


publicfunctionrules():array
{
return[
// tự đoạn cần thiết tồn tại thả không thể vì không
['tagId,title,userId,freeTime','required'],

// 4<= tagId <=567
['tagId','size','min'=>4,'max'=>567,'filter'=>'int'],

// title length >= 40. Chú ý chỉ cần một cái tham số nghiệm chứng, không cần thêm key, như nơi này 40
['title','min',40,'filter'=>'trim'],

// lớn hơn 0
['freeTime','number'],

// đựng trước trí điều kiện
['tagId','number','when'=>function($data) {
returnisset($data['status']) &&$data['status'] >2;
}],

// ở nghiệm chứng trước sẽ trước lọc thay đổi vì int. Hơn nữa chỉ sẽ ở nói rõ cảnh tượng tên là 'scene1' khi quy tắc hữu hiệu
['userId','number','on'=>'scene1','filter'=>'int'],
['username','string','on'=>'scene2','filter'=>'trim'],

// sử dụng tự định nghĩa chính tắc biểu đạt thức
['username','regexp','/^[a-z]\w{2,12}$/'],

// tự định nghĩa nghiệm chứng khí, tịnh chỉ chắc chắn trước quy tắc tin tức
['title','custom','msg'=>'{attr} error msg!'],

// trực tiếp sử dụng bế bao nghiệm chứng
['status',function($status) {
if(is_int($status) &&$status>3) {
returntrue;
}
returnfalse;
}],

// đánh dấu tự đoạn là an toàn đáng tin cậy không cần nghiệm chứng
['createdAt, updatedAt','safe'],
];
}

// định nghĩa bất đồng cảnh tượng yêu cầu nghiệm chứng tự đoạn.
// công năng cùng quy tắc 'on' cùng loại, hai người tận lực không cần đồng thời sử dụng, để tránh lẫn lộn.
publicfunctionscenarios():array
{
return[
'create'=> ['user','pwd','code'],
'update'=> ['user','pwd'],
];
}

// định nghĩa tự đoạn phiên dịch
publicfunctiontranslates():array
{
return[
'userId'=>'Người dùng Id',
];
}

// tự định nghĩa nghiệm chứng khí nhắc nhở tin tức, cam chịu tin tức thỉnh xem {@see ErrorMessageTrait::$messages}
publicfunctionmessages():array
{
return[
// sử dụng nghiệm chứng khí tên chỉ định tin tức
'required'=>'{attr} là tất điền hạng.',
// có thể trực tiếp nhằm vào tự đoạn nào đó quy tắc tiến hành tin tức định nghĩa
'title.required'=>'O, tiêu đề là tất điền hạng. are you known?',
];
}

// tăng thêm một cái nghiệm chứng khí. Cần thiết phản hồi một cái bố ngươi giá trị ghi rõ nghiệm chứng thất bại hoặc thành công
protectedfunctioncustomValidator($title):bool
{
// some logic...
// $this->getRaw('field'); phỏng vấn data số liệu

returntrue;// Or false;
}
}
  • Sử dụng
// nghiệm chứng POST số liệu
$v=PageRequest::check($_POST);

// nghiệm chứng thất bại
if($v->isFail()) {
var_dump($v->getErrors());
var_dump($v->firstError());
}

// nghiệm chứng thành công...
$safeData=$v->getSafeData();// nghiệm chứng thông qua an toàn số liệu
// $postData = $v->all(); // nguyên thủy số liệu

$db->save($safeData);

Phương thức 3: Sử dụng traitValidationTrait

Sáng tạo một cái tân class, cũng sử dụng TraitInhere\Validate\ValidationTrait.

Này phương thức là cao cấp tự định nghĩa sử dụng phương thức, có thể phương tiện khảm nhập đến mặt khác loại trung.

Như sau, khảm nhập đến một số liệu mô hình loại trung, thực hiện một cái đơn giản mô hình cơ loại, tăng thêm cơ sở dữ liệu ký lục trước tự động tiến hành nghiệm chứng

classDataModel
{
use\Inhere\Validate\ValidationTrait;

protected$data= [];

protected$db;

/**
* @param array $data
* @return $this
*/
publicfunctionload(array$data)
{
$this->data=$data;

return$this;
}

publicfunctioncreate()
{
if($this->validate()->isFail()) {
returnfalse;
}

return$this->db->insert($this->getSafeData());
}
}

Sử dụng:

// on model class
classUserModelextendsDataModel
{
publicfunctionrules():array
{
return[
['username, passwd','required'],
['passwd','compare','repasswd','on'=>'create'],
['username','string','min'=>2,'max'=>20,'on'=>'create'],
['id','number','on'=>'update'],// chỉ tác dụng với cảnh tượng update
['createdAt, updatedAt','safe'],
];
}
}

// on controller action...
classUserController
{
// in action
// @api /user/add
publicfunctionaddAction()
{
$model=newUserModel;
// tái nhập đệ trình số liệu cũng giả thiết cảnh tượng vì: create
$model->load($_POST)->atScene('create');

if(!$ret=$model->create()) {
exit($model->firstError());
}

echo"add success: userId =$ret";
}
}

Tăng thêm tự định nghĩa nghiệm chứng khí

Tầng dưới chót thuyên chuyển nghiệm chứng khí là duy trì:

  • Một cái bế bao
  • Một cái hàm số tên
  • Một cái trước mặt nghiệm chứng loại phương pháp danh
    • Ở kế thừaInhere\Validate\ValidationTử loại tăng thêm nghiệm chứng phương pháp. Thỉnh xem mặt trênSử dụng phương thức 1
  • Một cái thông quaValidation->addValidator()Tăng thêm lâm thời nghiệm chứng khí
  • Một cái thông quaValidator\UserValidators::setĐăng ký toàn cục nghiệm chứng khí
  • Một cái thực hiệnValidator\ValidatorInterfaceĐối tượng
  • Một cái nhưng thuyên chuyển đối tượng ( có__invokePhương pháp )

Chú ý: Viết ở trước mặt loại nghiệm chứng khí phương pháp cần thiết có chứa hậu tốValidator,Để ngừa ngăn đối nội bộ mặt khác phương pháp tạo thành quấy nhiễu

Thí dụ mẫu

$v=Validation::make($_POST,[
// add rule
['title','min',40],
['freeTime','number'],
['title','checkTitle'],
])
->addValidator('checkTitle',function($title) {// cái thứ nhất tham số là tự đoạn giá trị. Cuối cùng một cái tham số luôn là $data
// some logic...

returntrue;// thành công phản hồi True. Nghiệm chứng thất bại, phản hồi False.
},'{attr} default message!')
->validate();

Trực tiếp viết bế bao tiến hành nghiệm chứng e.g:

['status',function($status) {// cái thứ nhất tham số là tự đoạn giá trị. Cuối cùng một cái tham số luôn là $data
if($status>3) {
returntrue;
}

returnfalse;
}]

Định nghĩa một cái bế bao nghiệm chứng loại tiến hành nghiệm chứng, loại này phương pháp có thể đề cao nghiệm chứng phương pháp phục dùng tính

Đừng quên kế thừa\Inhere\Validate\Validator\AbstractValidator,Cùng thực hiện cần thiết phương phápvalidate

classAdemoValidatorextends\Inhere\Validate\Validator\AbstractValidator
{

publicfunctionvalidate($value,$data):bool
{
if($value==1) {
returntrue;
}
returnfalse;
}

}

// sử dụng
['status',newAdemoValidator()],

Nghiệm chứng trước trí / từ đứng sauXử lý

  • Phương thức 1: ỞValidationTrung

Nên phương pháp cùngonBeforeValidate&onAfterValidateCó xung đột

useInhere\Validate\Validation;

classPageValidationextendsValidation
{
# tiến hành nghiệm chứng trước xử lý, phản hồi false tắc đình chỉ nghiệm chứng, nhưng không có sai lầm tin tức, có thể ở logic trung thuyên chuyển addError gia tăng sai lầm tin tức
publicfunctionbeforeValidate():bool
{
returntrue;
}
# tiến hành nghiệm chứng sau xử lý, nên làm gì làm gì
publicfunctionafterValidate():bool
{
returntrue;
}
}
  • Phương thức 2:onBeforeValidate&onAfterValidate
useInhere\Validate\Validation;

$v=Validation::make(['name'=>'inhere'], [
['name','string','min'=>3,'filter'=>'trim|upper']
]);

$v->onBeforeValidate(function(Validation$v) {
returntrue;
});

$v->onAfterValidate(function(Validation$v) {

});

$v->validate();

Một cái hoàn chỉnh quy tắc thí dụ mẫu

Một cái hoàn chỉnh quy tắc thí dụ mẫu, bao hàm sở hữu nhưng tăng thêm hạng.

Chú ý:

  • Mỗi nội quy tắc cái thứ nhất nguyên tốCần thiếtMuốn nghiệm chứng tự đoạn( có thể đồng thời phối trí nhiều, có thể là số tổ. type:string|array)
  • Cái thứ hai nguyên tốCần thiếtMột cáiNghiệm chứng khí ( tự phù xuyến, bế bao, nhưng hồi điều đối tượng hoặc số tổ. type:string|Closure|callable)
  • Mặt sau theo sát là nghiệm chứng khí khả năng yêu cầu tham số tin tức ( nếu nghiệm chứng khí yêu cầuTham số chỉ có một cái, tắc tham số không cần mang key)
  • Sau đó chính là mặt khác lựa chọn phối trí (msg,on,filter,...)
// a full rule
[
// basic validate setting
'field0,field1,...','validator','arg0','arg1',...,

// some extended option settings
'skipOnEmpty'=>'bool',
'msg'=>'string|array',
'default'=>'mixed',
'on'=>'string|array'
'isEmpty' => 'callback(string|closure)',
'when'=>'callback(string|closure)',
'filter'=>'callback(string|array|closure)'
]

Tự đoạn nghiệm chứng khíFieldValidationPhối trí cùng loại, chỉ làChỉ có một chữ đoạn, mà nghiệm chứng khí cho phép có bao nhiêu cái

Quy tắc lựa chọn thiết trí

Trừ bỏ có thể tăng thêm tự đoạn nghiệm chứng ở ngoài, còn có một ít đặc thù từ ngữ mấu chốt có thể thiết trí sử dụng, lấy thích ứng các loại nhu cầu.

default-- thiết trí tự đoạn cam chịu giá trị

Cấp một cái hoặc nhiều tự đoạn thiết trí một cái cam chịu giá trị.

['page','number','default'=>1],
['pageSize','number','default'=>15],

NOTICE: Cam chịu giá trị cũng sẽ bị nghiệm chứng khí nghiệm chứng

msg-- thiết trí sai lầm nhắc nhở tin tức

Thiết trí trước mặt quy tắc sai lầm nhắc nhở tin tức, thiết trí sau liền sẽ không ở sử dụng cam chịu nhắc nhở tin tức.

['title','customValidator','msg'=>'{attr} error msg!'], // chỉ định trước mặt quy tắc tin tức
// o, có thể là số tổ nga:)
['tagId,title,userId,freeTime','required','msg'=> [
'tagId'=>'message...',
'userId'=>'message 1...',
]],

on-- thiết trí quy tắc sử dụng cảnh tượng

Nếu yêu cầu làm định nghĩa quy tắc ở nhiều cùng loại tình hình hạ lặp lại sử dụng, có thể thiết trí quy tắc sử dụng cảnh tượng. Ở nghiệm chứng khi cũng cho thấy muốn nghiệm chứng cảnh tượng

// ở kế thừa Validation tử loại ValidationClass trung...
publicfunctionrules():array
{
return[
['title','required'],
['userId','number','on'=>'create'],
['userId','int','on'=>'update'],
['name','string','on'=>'create,update'],
];
}

Sử dụng:

Như, ở dưới chỉ định nghiệm chứng cảnh tượng khi, sẽ sử dụng mặt trên đệ 1,3,4 nội quy tắc. ( đệ 1 điều không có hạn chế quy tắc sử dụng cảnh tượng, ở sở hữu cảnh tượng đều nhưng dùng )

//...
$valid=ValidationClass::make($_POST)->atScene('update')->validate();
//...

when-- quy tắc trước trí điều kiện

Chỉ có trước đây thỏa mãn (when) trước trí điều kiện khi mới có thể nghiệm chứng này quy tắc

Như ở dưới ví dụ trung, kiểm tra đến đệ nhị nội quy tắc khi, sẽ trước chấp hành bế bao (when), Đương này phản hồitrueNghiệm chứng này nội quy tắc, nếu không sẽ không nghiệm chứng này nội quy tắc

// ở kế thừa Validation tử loại trung...
publicfunctionrules():array
{
return[
['title','required'],
['tagId','number','when'=>function($data) {
returnisset($data['status']) &&$data['status'] >2;
}],
];
}

skipOnEmpty-- vì không hay không nhảy qua nghiệm chứng

Đương tự đoạn giá trị vì không khi hay không nhảy qua nghiệm chứng, cam chịu giá trị làtrue.( tham khảo tự yii2)

'required*' quy tắc không ở này hạn chế nội.

Như, có một cái quy tắc:

['name','string']

Đệ trình số liệu trung không cónameTự đoạn hoặc là$data['name']Tương đương không đều sẽ không tiến hànhstringNghiệm chứng; Chỉ có đương$data['name']Có giá trị thả không vì khôngKhi mới có thể nghiệm chứng hay không làstring

Nếu nếu muốn vì không khi cũng kiểm tra, thỉnh đem này tự đoạn đồng thời gia nhậprequiredQuy tắc trung.

['name','required']
['name','string']

Hoặc là cũng có thể thiết trí'skipOnEmpty' => false:

['name','string','skipOnEmpty'=>false]

Như thế nào xác định giá trị vì khôngVề vì không

isEmpty-- hay không vì không phán đoán

Hay không vì không phán đoán, cái này phán đoán làmskipOnEmptyCăn cứ. Cam chịu sử dụngValidators::isEmptyTới phán đoán.

Ngươi cũng có thể tự định nghĩa phán đoán quy tắc:

['name','string','isEmpty'=>function($value) {
returntrueorfalse;
}]

Tự định nghĩa isEmpty nghiệm chứng khi, ứng lưu ý $value hay không vì ArrayValueNotExists ví dụ thực tế

['users.*.id','each','required','isEmpty'=>function($value) {
// each value must be verified
foreach($valueas$item) {
if($iteminstanceof \Inhere\Validate\Exception\ArrayValueNotExists) {
returntrue;
}
// your code here...
}]

filter-- sử dụng lọc khí

Duy trì tại tiến hành nghiệm chứng trước đối giá trị sử dụng lọc khí tiến hành tinh lọc lọcNội trí lọc khí

['tagId,userId,freeTime','number','filter'=>'int'],
['field','validator','filter'=>'filter0|filter1...'],

// yêu cầu tự định nghĩa tính càng cao khi, có thể sử dụng số tổ.
['field1','validator','filter'=> [
'string',
'trim',
['Class','method'],
['Object','method'],
// thêm vào thêm vào tham số. Truyền vào khi, cái thứ nhất tham số luôn là muốn lọc tự đoạn giá trị, còn lại theo thứ tự thêm vào
'myFilter'=> ['arg1','arg2'],
// trực tiếp sử dụng bế bao
function($val) {
returnstr_replace('','',$val);
},
]],

Nhắc nhở:

  • Cho phép đồng thời sử dụng nhiều lọc khí. Tự phù xuyến sử dụng|Phân cách, hoặc là phối trí số lượng tổ.
  • Chú ý: Viết ở trước mặt loại lọc khí phương pháp cần thiết có chứa hậu tốFilter,Để ngừa ngăn đối nội bộ mặt khác phương pháp tạo thành quấy nhiễu
  • Thông qua loạiFiltration,Có thể độc lập sử dụng lọc khí công năng
  • php nội trí lọc khí thỉnh xem thêmhttp://php.net/manual/zh/filter.filters.sanitize.php

Cảnh tượng nghiệm chứng

Nếu yêu cầu làm định nghĩa quy tắc ở nhiều cùng loại tình hình hạ lặp lại sử dụng, có thể thiết trí quy tắc sử dụng cảnh tượng.Ở nghiệm chứng khi cũng cho thấy muốn nghiệm chứng cảnh tượng

Phương thức 1

Ở kế thừa loại trung sử dụngscenarios()Phương pháp:

// ở kế thừa Validation tử loại ValidationClass trung...

// định nghĩa bất đồng cảnh tượng yêu cầu nghiệm chứng tự đoạn.
// công năng cùng quy tắc 'on' cùng loại, hai người tận lực không cần đồng thời sử dụng, để tránh lẫn lộn.
publicfunctionscenarios():array
{
return[
'create'=> ['user','pwd','code'],
'update'=> ['user','pwd'],
];
}

Phương thức 2

Tăng thêm quy tắc khi phối tríonLựa chọn:

// ở kế thừa Validation tử loại ValidationClass trung...
publicfunctionrules():array
{
return[
['title','required'],
['userId','number','on'=>'create'],
['userId','int','on'=>'update'],
['name','string','on'=>'create,update'],
];
}

Nghiệm chứng sử dụng

$v->setSecne('update')->validate();

Lựa chọn thiết trí

StopOnError

stopOnErrorHay không ở xuất hiện cái thứ nhất nghiệm chứng sai lầm khi liền đình chỉ nghiệm chứng.

  • Cam chịutrue,Luôn là chỉ biết bắt được cái thứ nhất sai lầm, như vậy tính năng càng tốt.
  • Thiết trí vìfalse,Tắc sẽ kiểm tra toàn bộ quy tắc, bắt được toàn bộ nghiệm chứng sai lầm.
$v->setStopOnError(false);

SkipOnEmpty

  • SkipOnEmptyVì không hay không nhảy qua nghiệm chứng, cam chịutrue( lúc này cần phối hợprequiredNghiệm chứng không thể vì không )
$v->setSkipOnEmpty(false);

Nội trí lọc khí

Một ít php nội trí hàm số nhưng trực tiếp sử dụng. e.gtrim|ucfirstjson_decodemd5

Lọc khí Thuyết minh Thí dụ mẫu
abs Phản hồi giá trị tuyệt đối ['field', 'int', 'filter' => 'abs'],
int/integer Lọc phi pháp tự phù cũng thay đổi vìintLoại hìnhDuy trì số tổ ['userId', 'number', 'filter' => 'int'],
bool/boolean Thay đổi vìboolVề bool giá trị ['argee', 'bool']
float Lọc phi pháp tự phù, giữ lạifloatCách thức số liệu ['price', 'float', 'filter' => 'float'],
string Lọc phi pháp tự phù cũng thay đổi vìstringLoại hình ['userId', 'number', 'filter' => 'string'],
trim Đi trừ đầu đuôi chỗ trống tự phù, duy trì số tổ. ['username', 'min', 4, 'filter' => 'trim'],
nl2br Thay đổi\n\r\n\r<br/> ['content', 'string', 'filter' => 'nl2br'],
lower/lowercase Tự phù xuyến thay đổi vì viết thường ['description', 'string', 'filter' => 'lowercase'],
upper/uppercase Tự phù xuyến thay đổi vì viết hoa ['title', 'string', 'filter' => 'uppercase'],
snake/snakeCase Tự phù xuyến thay đổi vì xà hình phong cách ['title', 'string', 'filter' => 'snakeCase'],
camel/camelCase Tự phù xuyến thay đổi vì bướu lạc đà phong cách ['title', 'string', 'filter' => 'camelCase'],
timestamp/strToTime Tự phù xuyến ngày thay đổi thời gian chọc ['pulishedAt', 'number', 'filter' => 'strToTime'],
url URL lọc, di trừ sở hữu không phù hợp URL tự phù ['field', 'url', 'filter' => 'url'],
str2list/str2array Tự phù xuyến chuyển số tổ'tag0,tag1' -> ['tag0', 'tag1'] ['tags', 'strList', 'filter' => 'str2array'],
unique Đi số chia tổ trung lặp lại giá trị (byarray_unique()) ['tagIds', 'intList', 'filter' => 'unique'],
email email lọc, di trừ sở hữu không phù hợp email tự phù ['field', 'email', 'filter' => 'email'],
encoded Đi trừ URL mã hóa không cần tự phù, cùngurlencode()Hàm số thực cùng loại ['imgUrl', 'url', 'filter' => 'encoded'],
clearSpace Rửa sạch không cách ['title', 'string', 'filter' => 'clearSpace'],
clearNewline Rửa sạch đổi hành phù ['title', 'string', 'filter' => 'clearNewline'],
clearTags/stripTags Tương đương với sử dụngstrip_tags() ['content', 'string', 'filter' => 'clearTags'],
escape/specialChars Tương đương với sử dụnghtmlspecialchars()Chuyển nghĩa số liệu ['content', 'string', 'filter' => 'specialChars'],
quotes Ứng dụngaddslashes()Chuyển nghĩa số liệu ['content', 'string', 'filter' => 'quotes'],

Nội trí nghiệm chứng khí

/Phân cách nghiệm chứng khí, cho thấy công năng là giống nhau, chỉ là có bất đồng biệt danh

Nghiệm chứng khí Thuyết minh Quy tắc thí dụ mẫu
required Yêu cầu này tự đoạn / thuộc tính là cần thiết ( không vì trống không ).Về vì không ['tagId, userId', 'required' ]
int/integer Nghiệm chứng hay không là intDuy trì phạm vi kiểm tra ['userId', 'int']['userId', 'int', 'min'=>4, 'max'=>16]
num/number Nghiệm chứng hay không là number( lớn hơn 0 số nguyên )Duy trì phạm vi kiểm tra ['userId', 'number']['userId', 'number', 'min'=>4, 'max'=>16]
bool/boolean Nghiệm chứng hay không là bool.Về bool giá trị ['open', 'bool']
float Nghiệm chứng hay không là float ['price', 'float']
string Nghiệm chứng hay không là string.Duy trì chiều dài kiểm tra ['name', 'string'],['name', 'string', 'min'=>4, 'max'=>16]
accepted Nghiệm chứng tự đoạn cần thiết vìyes/on/1/trueNày ở xác nhận “Phục vụ điều khoản” có đồng ý hay không khi hữu dụng (ref laravel) ['agree', 'accepted']
url Nghiệm chứng hay không là url ['myUrl', 'url']
email Nghiệm chứng hay không là email ['userEmail', 'email']
Alpha Nghiệm chứng giá trị hay không chỉ bao hàm chữ cái tự phù ['name', ' Alpha ']
Alpha Num Nghiệm chứng hay không chỉ bao hàm chữ cái, con số ['field', ' Alpha Num']
Alpha Dash Nghiệm chứng hay không chỉ bao hàm chữ cái, con số, gạch nối ( - ) cùng với hạ hoa tuyến ( _ ) ['field', ' Alpha Dash']
map/isMap Nghiệm chứng giá trị hay không là một cái phi số tự nhiên tổ map (key - value hình thức ) ['goods', 'isMap']
list/isList Nghiệm chứng giá trị hay không là một cái số tự nhiên tổ list (key là từ 0 tự nhiên tăng trưởng ) ['tags', 'isList']
array/isArray Nghiệm chứng hay không là số tổ ['goods', 'isArray']
each Đối số tổ trung mỗi cái giá trị đều ứng dụngCấp định nghiệm chứng khí( nơi này tuyệt đại đa số nghiệm chứng khí đều có thể sử dụng ), hơn nữa muốnToàn bộ thông qua ['goods.*','each','string'],['goods.*','each','string','min'=>3]
hasKey Nghiệm chứng số tổ tồn tại cấp định key(s) ['goods', 'hasKey', 'pear']['goods', 'hasKey', ['pear', 'banana']]
distinct Số tổ trung giá trị cần thiết là duy nhất ['goods', 'distinct'],['users.*.id', 'distinct']
ints/intList Nghiệm chứng tự đoạn giá trị hay không là một cái int list ['tagIds', 'intList']
numList Nghiệm chứng tự đoạn giá trị hay không là một cái number list ['tagIds', 'numList']
strings/strList Nghiệm chứng tự đoạn giá trị hay không là một cái string list ['tags', 'strList']
arrList Nghiệm chứng tự đoạn giá trị hay không là một cái array list( nhiều duy số tổ ) ['tags', 'arrList']
min Nhỏ nhất biên giới giá trị nghiệm chứng ['title', 'min', 40]
max Lớn nhất biên giới giá trị nghiệm chứng ['title', 'max', 40]
size/range/between Nghiệm chứng lớn nhỏ phạm vi, có thể duy trì nghiệm chứngint,string,arraySố liệu loại hình ['tagId', 'size', 'min'=>4, 'max'=>567]
length Chiều dài nghiệm chứng ( cùngsizeKhông sai biệt lắm, nhưng chỉ có thể nghiệm chứngstring,arrayChiều dài ['username', 'length', 'min' => 5, 'max' => 20]
fixedSize/sizeEq/lengthEq Cố định chiều dài / lớn nhỏ ( nghiệm chứngstring,arrayChiều dài,intLớn nhỏ ) ['field', 'fixedSize', 12]
startWith Giá trị (string/array) này đây cấp định tự phù xuyến bắt đầu ['field', 'startWith', 'hell']
endWith Giá trị (string/array) này đây cấp định tự phù xuyến kết cục ['field', 'endWith', 'world']
in/enum Cái cử nghiệm chứng: Bao hàm ['status', 'in', [1,2,3]]
notIn Cái cử nghiệm chứng: Không bao hàm ['status', 'notIn', [4,5,6]]
inField Cái cử nghiệm chứng: Tự đoạn giá trị tồn tại với một cái khác tự đoạn ( anotherField ) giá trị trung ['field', 'inField', 'anotherField']
eq/mustBe Cần thiết là tương đương cấp định giá trị ['status', 'mustBe', 1]
ne/neq/notBe Không thể tương đương cấp định giá trị ['status', 'notBe', 0]
eqField Tự đoạn giá trị tương đối: Tương đồng ['passwd', 'eqField', 'repasswd']
neqField Tự đoạn giá trị tương đối: Không thể tương đồng ['userId', 'neqField', 'targetId']
ltField Tự đoạn giá trị tương đối: Nhỏ hơn ['field1', 'ltField', 'field2']
lteField Tự đoạn giá trị tương đối: Nhỏ hơn hoặc bằng ['field1', 'lteField', 'field2']
gtField Tự đoạn giá trị tương đối: Lớn hơn ['field1', 'gtField', 'field2']
gteField Tự đoạn giá trị tương đối: Lớn hơn hoặc bằng ['field1', 'gteField', 'field2']
requiredIf Chỉ định cái khác tự đoạn ( anotherField ) giá trị tương đương bất luận cái gì một cáivalueKhi, này tự đoạn vìTất điền(ref laravel) ['city', 'requiredIf', 'myCity', ['chengdu'] ]
requiredUnless Chỉ định cái khác tự đoạn ( anotherField ) giá trị tương đương bất luận cái gì một cáivalueKhi, này tự đoạn vìKhông cần điền(ref laravel) ['city', 'requiredUnless', 'myCity', ['chengdu'] ]
requiredWith Chỉ định tự đoạn trungTùy ý một cáiCó giá trị thả không vì không, tắc này tự đoạn vìTất điền(ref laravel) ['city', 'requiredWith', ['myCity'] ]
requiredWithAll Nếu chỉ địnhSở hữu tự đoạnĐều có giá trị, tắc này tự đoạn vìTất điền(ref laravel) ['city', 'requiredWithAll', ['myCity', 'myCity1'] ]
requiredWithout Nếu khuyết thiếuTùy ý một cáiChỉ định tự đoạn giá trị, tắc này tự đoạn vìTất điền(ref laravel) ['city', 'requiredWithout', ['myCity', 'myCity1'] ]
requiredWithoutAll Nếu sở hữu chỉ định tự đoạnĐều không có giá trị,Tắc này tự đoạn vìTất điền(ref laravel) ['city', 'requiredWithoutAll', ['myCity', 'myCity1'] ]
date Nghiệm chứng hay không là date ['publishedAt', 'date']
dateFormat Nghiệm chứng hay không là date, hơn nữa là chỉ định cách thức ['publishedAt', 'dateFormat', 'Y-m-d']
dateEquals Nghiệm chứng hay không là date, hơn nữa hay không là tương đương cấp định ngày ['publishedAt', 'dateEquals', '2017-05-12']
beforeDate Nghiệm chứng tự đoạn giá trị cần thiết là cho định ngày phía trước giá trị (ref laravel) ['publishedAt', 'beforeDate', '2017-05-12']
beforeOrEqualDate Tự đoạn giá trị cần thiết là nhỏ hơn hoặc tương đương cấp định ngày giá trị (ref laravel) ['publishedAt', 'beforeOrEqualDate', '2017-05-12']
afterOrEqualDate Tự đoạn giá trị cần thiết là lớn hơn hoặc tương đương cấp định ngày giá trị (ref laravel) ['publishedAt', 'afterOrEqualDate', '2017-05-12']
afterDate Nghiệm chứng tự đoạn giá trị cần thiết là cho định ngày phía trước giá trị ['publishedAt', 'afterDate', '2017-05-12']
json Nghiệm chứng hay không là json tự phù xuyến ( cam chịu nghiêm khắc nghiệm chứng, cần thiết lấy{[Bắt đầu ) ['goods', 'json']['somedata', 'json', false]- phi nghiêm khắc, bình thường tự phù xuyếneg 'test'Cũng sẽ thông qua
file Nghiệm chứng hay không là thượng truyền văn kiện ['upFile', 'file']
image Nghiệm chứng hay không là thượng truyền hình ảnh văn kiện ['avatar', 'image'],Hạn định hậu tố danh['avatar', 'image', 'jpg,png']
ip Nghiệm chứng hay không là IP ['ipAddr', 'ip']
ipv4 Nghiệm chứng hay không là IPv4 ['ipAddr', 'ipv4']
ipv6 Nghiệm chứng hay không là IPv6 ['ipAddr', 'ipv6']
macAddress Nghiệm chứng hay không là mac Address ['field', 'macAddress']
md5 Nghiệm chứng hay không là md5 cách thức tự phù xuyến ['passwd', 'md5']
sha1 Nghiệm chứng hay không là sha1 cách thức tự phù xuyến ['passwd', 'sha1']
color Nghiệm chứng hay không là html color ['backgroundColor', 'color']
regex/regexp Sử dụng chính tắc tiến hành nghiệm chứng ['name', 'regexp', '/^\w+$/']
safe Dùng cho đánh dấu tự đoạn là an toàn, không cần nghiệm chứng ['createdAt, updatedAt', 'safe']

safeNghiệm chứng khí, đánh dấu thuộc tính / tự đoạn là an toàn

Đặc thù nghiệm chứng khí dùng cho đánh dấu tự đoạn là an toàn, không cần nghiệm chứng, trực tiếp gia nhập đến an toàn số liệu trung.

Tỷ như chúng ta ở viết nhập cơ sở dữ liệu phía trước tay động thêm vào tự đoạn: Sáng tạo thời gian, đổi mới thời gian.

['createdAt, updatedAt','safe']

Một ít bổ sung thuyết minh

Về vì không phán đoán

Tự đoạn phù hợp phía dưới nhậm một cái kiện khi tức vì “Không”

  • Nên giá trị vìnull.
  • Nên giá trị vì không tự phù xuyến''
  • Nên giá trị vì không số tổ[]
  • Nên giá trị vì đối không tượng -- trống khôngCó thể đếm đượcĐối tượng
  • Nên giá trị vì không có đường nhỏ thượng truyền văn kiện

Về bố ngươi giá trị

Giá trị phù hợp dưới đây tùy ý hạng nhất tức cho rằng là vì bool giá trị ( không phân chia lớn nhỏ viết )

  • Là "1", "true", "on" cùng "yes" (TRUE)
  • Là "0", "false", "off", "no" cùng "" (FALSE)

Về văn kiện nghiệm chứng

Văn kiện nghiệm chứng khi chú ý muốn thiết trí văn kiện tin tức nguyên số liệu

$v=Validation::make($_POST,[
// [...],
// some rules...
])
->setUploadedFiles($_FILES)
->validate();
//...

Nhắc nhở cùng chú ý

  • Thỉnh đemrequired*Hệ liệt quy tắc viết ở quy tắc danh sách đằng trước
  • Quy tắc thượng đều duy trì tăng thêm lọc khí
  • Nghiệm chứng lớn nhỏ phạm viintLà khá lớn tiểu.stringCùngarrayLà kiểm tra chiều dài. Lớn nhỏ phạm vi là bao hàm biên giới giá trị
  • size/rangelengthCó thể chỉ định nghĩaminHoặc làmaxGiá trị
  • Duy trì đối số tổ tử cấp giá trị nghiệm chứng
[
'goods'=> [
'apple'=>34,
'pear'=>50,
],
]

Quy tắc:

['goods.pear','max',30], //goods hạ pear giá trị lớn nhất không thể vượt qua30
  • Duy trì đối số tổ tử cấp giá trị tiến hành biến lịch nghiệm chứng
[
'goods'=> [
'apple'=>34,
'pear'=>50,
],
'users'=> [
['id'=>34,'name'=>'tom'],
['id'=>89,'name'=>'john'],
]
]
['goods.*','each','number'], //goods hạ mỗi cái giá trị đều cần thiết vì lớn hơn0Số nguyên
// phương pháp sáng tác là chờ hiệu
// ['goods','each','number'], //goods hạ mỗi cái giá trị đều cần thiết vì lớn hơn0Số nguyên

// nhiều duy số tổ
['users.*.id','each','required'],
['users.*.id','each','number','min'=>34],
['users.*.name','each','string','min'=>5],
  • Đối với có chứa thông xứng phù*Tự đoạn, tăng thêm lọc khí là không có hiệu quả

Một ít mấu chốt phương pháp API

Thiết trí nghiệm chứng cảnh tượng

publicfunctionsetScene(string$scene)
publicfunctionatScene(string$scene)// setScene biệt danh phương pháp

Thiết trí trước mặt nghiệm chứng cảnh tượng tên. Đem chỉ biết sử dụng phù hợp trước mặt cảnh tượng quy tắc đối số liệu tiến hành nghiệm chứng

Tiến hành số liệu nghiệm chứng

publicfunctionvalidate(array$onlyChecked= [],$stopOnError=null)

Tiến hành số liệu nghiệm chứng. Phản hồi nghiệm chứng khí đối tượng, sau đó liền có thể thu hoạch nghiệm chứng kết quả chờ tin tức.

  • $onlyCheckedCó thể thiết trí lần này yêu cầu nghiệm chứng tự đoạn
  • $stopOnErrorHay không đương xuất hiện một cái nghiệm chứng thất bại liền lập tức đình chỉ. Cam chịu làtrue

Tăng thêm tự định nghĩa nghiệm chứng khí

publicfunctionaddValidator(string$name,\Closure$callback,string$msg='')

Tăng thêm tự định nghĩa nghiệm chứng khí. Phản hồi nghiệm chứng khí đối tượng hòng duy trì liên thức thuyên chuyển

  • $nameTự định nghĩa nghiệm chứng khí tên
  • $callbackTự định nghĩa nghiệm chứng khí. Xử lý nghiệm chứng, vì ngắn gọn chỉ cho phép bế bao.
  • $msgNhưng tuyển. Trước mặt nghiệm chứng khí sai lầm tin tức

Phán đoán nghiệm chứng hay không thông qua

// nghiệm chứng thất bại
public function isFail()
public function hasError() // isFail() biệt danh phương pháp

// thành công thông qua nghiệm chứng
public function isOk()
public function isPassed()

Thu hoạch nghiệm chứng hay không thông qua ( hay không có nghiệm chứng thất bại ).

Thu hoạch sở hữu sai lầm tin tức

publicfunctiongetErrors():array

Thu hoạch sở hữu sai lầm tin tức, bao hàm sở hữu sai lầm tự đoạn cùng sai lầm tin tức nhiều duy số tổ. eg:

[
['name'=>'field1','msg'=>'error Message1'],
['name'=>'field2','msg'=>'error Message2'],
...
]

Cùng cái thuộc tính / tự đoạn cũng có thể có bao nhiêu cái sai lầm tin tức, đương vì nó tăng thêm nhiều nghiệm chứng quy tắc khi.

Được đến cái thứ nhất sai lầm tin tức

publicfunctionfirstError($onlyMsg=true)
  • $onlyMsgHay không chỉ phản hồi tin tức tự phù xuyến. Đương vì false, phản hồi còn lại là số tổ eg:['name' => 'field', 'msg' => 'error message']

Được đến cuối cùng một sai lầm tin tức

publicfunctionlastError($onlyMsg=true)
  • $onlyMsgHay không chỉ phản hồi tin tức tự phù xuyến. Đương vì false, phản hồi còn lại là số tổ eg:['name' => 'field', 'msg' => 'error message']

Thu hoạch sở hữu nghiệm chứng thông qua số liệu

publicfunctiongetSafeData():array|\stdClass

Thu hoạch sở hữuNghiệm chứng thông quaAn toàn số liệu.

  • Này số liệu số tổ chỉ bao hàm gia nhập quy tắc nghiệm chứng tự đoạn số liệu, sẽ không đựng thêm vào tự đoạn. ( nhưng trực tiếp tỉnh đi kế tiếp tự đoạn thu thập )
  • Đề cử sử dụng này số liệu tiến hành kế tiếp thao tác, tỷ như tồn nhập cơ sở dữ liệu chờ.

Chú ý: Đương có nghiệm chứng thất bại xuất hiện khi, an toàn số liệusafeDataSẽ bị trọng trí vì không. Tức chỉ có toàn bộ thông qua nghiệm chứng, mới có thể thu hoạch đếnsafeData

Căn cứ tự đoạn danh thu hoạch an toàn giá trị

publicfunctionval(string$key,$default=null)// getSafe() biệt danh phương pháp
publicfunctiongetValid(string$key,$default=null)// getSafe() biệt danh phương pháp
publicfunctiongetSafe(string$key,$default=null)

TừNghiệm chứng thông quaSố liệu trung lấy ra đối ứng key giá trị

Thu hoạch sở hữu nguyên thủy số liệu

publicfunctionall():array

Thu hoạch nghiệm chứng khi truyền vào sở hữu số liệu

Căn cứ tự đoạn danh thu hoạch nguyên thủy số liệu giá trị

publicfunctiongetRaw(string$key,$default=null)

Từ nghiệm chứng khi truyền vào số liệu trung lấy ra đối ứng key giá trị

Số hiệu thí dụ mẫu

Nhưng vận hành thí dụ mẫu thỉnh xemexample

Đơn nguyên thí nghiệm

phpunit

License

MIT

Ta mặt khác hạng mục

  • inhere/consoleNhẹ lượng thả công năng phong phú mệnh lệnh hành ứng dụng, khống chế đài lẫn nhau, công cụ kho
  • inhere/srouteNhẹ lượng thả nhanh chóng HTTP thỉnh cầu lộ từ kho

About

Lightweight and feature-rich PHP validation and filtering library. Support scene grouping, pre-filtering, array checking, custom validators, custom messages. Nhẹ lượng thả công năng phong phú PHP nghiệm chứng, lọc kho. Duy trì cảnh tượng phân tổ, trước trí lọc, số tổ kiểm tra, tự định nghĩa nghiệm chứng khí, tự định nghĩa tin tức.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published