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ảo
yii
,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
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.
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',...],
//......
];
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í
composer require inhere/php-validate
#or
#composer require inhere/php-validate ^3.0
master
Chi nhánh là yêu cầuphp8.1+
( đề cử sử dụng )2.x
Chi nhánh là duy trìphp7.1+
,Nhưng là trên cơ bản không hề giữ gìn.1.x
Chi 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.
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);
}
}
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);
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 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ừa
Inhere\Validate\Validation
Tử 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
- Ở kế thừa
- Một cái thông qua
Validation->addValidator()
Tăng thêm lâm thời nghiệm chứng khí - Một cái thông qua
Validator\UserValidators::set
Đăng ký toàn cục nghiệm chứng khí - Một cái thực hiện
Validator\ValidatorInterface
Đối tượng - Một cái nhưng thuyên chuyển đối tượng ( có
__invoke
Phươ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
$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()],
- Phương thức 1: Ở
Validation
Trung
Nên phương pháp cùng
onBeforeValidate
&onAfterValidate
Có 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, 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ếtLàMuố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ếtLàMộ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í
FieldValidation
Phố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
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.
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
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...',
]],
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();
//...
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ồitrue
Nghiệ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;
}],
];
}
Đươ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óname
Tự đoạn hoặc là$data['name']
Tương đương không đều sẽ không tiến hànhstring
Nghiệ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ậprequired
Quy 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
Hay không vì không phán đoán, cái này phán đoán làmskipOnEmpty
Căn cứ. Cam chịu sử dụngValidators::isEmpty
Tớ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...
}]
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ại
Filtration
,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
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 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'],
];
}
Tăng thêm quy tắc khi phối tríon
Lự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'],
];
}
$v->setSecne('update')->validate();
stopOnError
Hay 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ịu
true
,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
Vì không hay không nhảy qua nghiệm chứng, cam chịutrue
( lúc này cần phối hợprequired
Nghiệm chứng không thể vì không )
$v->setSkipOnEmpty(false);
Một ít php nội trí hàm số nhưng trực tiếp sử dụng. e.g
trim|ucfirst
json_decode
md5
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ìint Loại hìnhDuy trì số tổ |
['userId', 'number', 'filter' => 'int'], |
bool/boolean |
Thay đổi vìbool Về bool giá trị |
['argee', 'bool'] |
float |
Lọc phi pháp tự phù, giữ lạifloat Cách thức số liệu |
['price', 'float', 'filter' => 'float'], |
string |
Lọc phi pháp tự phù cũng thay đổi vìstring Loạ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 Vì<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'], |
/
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/true Nà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 ,array Số liệu loại hình |
['tagId', 'size', 'min'=>4, 'max'=>567] |
length |
Chiều dài nghiệm chứng ( cùngsize Không sai biệt lắm, nhưng chỉ có thể nghiệm chứngstring ,array Chiề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 ,array Chiều dài,int Lớ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áivalue Khi, 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áivalue Khi, 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'] |
Đặ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']
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ông
Có thể đếm được
Đối tượng - Nên giá trị vì không có đường nhỏ thượng truyền văn kiện
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ă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();
//...
- Thỉnh đem
required*
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 vi
int
Là khá lớn tiểu.string
Cùngarray
Là kiểm tra chiều dài. Lớn nhỏ phạm vi là bao hàm biên giới giá trị size/range
length
Có thể chỉ định nghĩamin
Hoặc làmax
Giá 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ả
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
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.
$onlyChecked
Có thể thiết trí lần này yêu cầu nghiệm chứng tự đoạn$stopOnError
Hay 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
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
$name
Tự định nghĩa nghiệm chứng khí tên$callback
Tự đị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.$msg
Nhưng tuyển. Trước mặt nghiệm chứng khí sai lầm tin tức
// 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 ).
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.
publicfunctionfirstError($onlyMsg=true)
$onlyMsg
Hay 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']
publicfunctionlastError($onlyMsg=true)
$onlyMsg
Hay 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']
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ệu
safeData
Sẽ 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
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ị
publicfunctionall():array
Thu hoạch nghiệm chứng khi truyền vào sở hữu số liệu
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ị
Nhưng vận hành thí dụ mẫu thỉnh xemexample
phpunit
- 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