verum php adalah perpustakaan validasi sisi server untuk PHP yang memungkinkan Anda memvalidasi array (dengan dukungan file) dengan mudah. Muncul dengan pesan kesalahan khusus, aturan, terjemahan bawaan, dan tidak ada ketergantungan.
Perpustakaan Validasi Sisi Server untuk PHP
Instal verum php dengan Komposer
composer require sandromiguel/verum-php
Validasi formulir pendaftaran sederhana (nama, email, dan umur)
use Verum Validator ;
$ rules = [
' name ' => [
' rules ' => [
' required ' ,
],
],
' email ' => [
' rules ' => [
' required ' ,
' email ' ,
],
],
' age ' => [
' rules ' => [
' numeric ' ,
],
],
];
$ validator = new Validator ( $ _POST , $ rules );
echo json_encode (
[
' valid ' => $ validator -> validate (),
' errors ' => $ validator -> getErrors (),
]
);
Masukan:
[
'name' => 'John Doe',
'email' => '[email protected]',
'age' => '20',
]
Keluaran:
{
"valid" : true ,
"errors" : []
}
Masukan:
[
'name' => '',
'email' => 'some text',
'age' => 'some text',
]
Keluaran:
{
"valid" : false ,
"errors" : {
"name" : {
"label" : null ,
"rules" : {
"required" : " This field is required. "
}
},
"email" : {
"label" : null ,
"rules" : {
"email" : " This field must be a valid email address. "
}
},
"age" : {
"label" : null ,
"rules" : {
"numeric" : " This field must be numeric. "
}
}
}
}
RuleEnum
Anda dapat menggunakan kelas RuleEnum
untuk mengakses semua nama aturan.
use Verum Validator ;
use Verum Enum RuleEnum ;
$ rules = [
' name ' => [
' rules ' => [
RuleEnum:: REQUIRED ,
],
],
...
];
$ rules = [
' name ' => [
' label ' => ' Name ' ,
' rules ' => [
RuleEnum:: REQUIRED ,
],
],
...
];
Keluaran:
{
...
"errors" : {
"name" : {
"label" : " Name " ,
"rules" : {
"required" : 'The "Name" field is required.'
}
},
...
}
}
$ rules = [
' name ' => [
' label ' => [
' en ' => ' Name ' ,
' pt-pt ' => ' Nome ' ,
],
' rules ' => [
RuleEnum:: REQUIRED ,
],
],
...
];
Keluaran (pt-pt):
{
...
"errors" : {
"name" : {
"label" : " Nome " ,
"rules" : {
"required" : 'O campo "Nome" é obrigatório.'
}
},
...
}
}
Anda dapat menggunakan beberapa terjemahan bawaan:
'en'
-> Bahasa Inggris (default)'nl-nl'
-> Belanda'pt-pt'
-> Portugis-Portugal'pt-br'
-> Portugis-Brasil $ validator = new Validator ( $ _POST , $ rules , ' pt-pt ' );
LangEnum
use Verum Validator ;
use Verum Enum LangEnum ;
. . .
$ validator = new Validator ( $ _POST , $ rules , LangEnum:: PT_PT );
. . .
$ validator = new Validator ( $ _POST , $ rules );
$ validator -> addSimpleCustomMessage ( ' min_length ' , ' Min Length rule custom error message ' );
. . .
Contoh keluaran:
{
...
"errors" : {
"name" : {
"label" : " Name " ,
"rules" : {
"min_length" : " Min Length rule custom error message "
}
},
...
}
}
. . .
$ validator = new Validator ( $ _POST , $ rules );
$ validator -> addSimpleCustomMessage ( ' min_length ' , ' Number of characters detected: {param:1}. Field name: "{param:2}". ' );
. . .
Contoh keluaran:
{
...
"errors" : {
"name" : {
"label" : " Name " ,
"rules" : {
"min_length" : 'Number of characters detected: 5. Field name: "Name".'
}
},
...
}
}
. . .
$ validator = new Validator ( $ _POST , $ rules );
$ validator -> addCustomMessage (
' required ' ,
' Custom error message with label for required rule. Label: {param:1}. ' ,
' Custom error message without label for required rule. '
);
. . .
Output - Bidang dengan label:
{
...
"errors" : {
"name" : {
"label" : " Name " ,
"rules" : {
"required" : 'Custom error message with label for required rule. Label: Name.'
}
},
...
}
}
Output - Bidang tanpa label:
{
...
"errors" : {
"name" : {
"label" : null ,
"rules" : {
"required" : " Custom error message without label for required rule. "
}
},
...
}
}
. . .
$ validator = new Validator ( $ _POST , $ rules );
$ validator -> addCustomMessages (
[
' min_length ' => ' Custom message for the "min_length" rule. ' ,
' required ' => ' Custom message for the "required" rule. ' ,
// other messages ...
]
);
. . .
. . .
$ validator = new Validator ( $ _POST , $ rules );
$ validator -> addCustomMessages (
[
' numeric ' => [
' withLabel ' => ' Custom message with label for "numeric" rule. Label: {param:1}. ' ,
' withoutLabel ' => ' Custom message without label for "numeric" rule. ' ,
],
' min_length ' => [
' withLabel ' => ' Custom message with label for "min_length" rule. Label: {param:2}, value: {param:1}. ' ,
' withoutLabel ' => ' Custom message without label for "min_length" rule. Value: {param:1}. ' ,
],
// other messages ...
]
);
. . .
Dengan verum php , Anda dapat menangani bidang multi-nama dengan lebih efektif. Ini adalah bidang yang menyertakan pengidentifikasi bahasa atau variasi lain dalam namanya. Misalnya, jika Anda memiliki bidang seperti title.en
, title.pt
, description.en
, dan description.pt
, Anda dapat menentukan aturan untuk bidang tersebut menggunakan wildcard.
$ rules = [
' title.* ' => [
' rules ' => [
RuleEnum:: REQUIRED ,
],
],
' description.* ' => [
' rules ' => [
RuleEnum:: REQUIRED ,
RuleEnum:: MIN_LENGTH => 10 ,
],
],
];
$ validator = new Validator ( $ _POST , $ rules );
// ...
Contoh keluaran:
{
"valid" : false ,
"errors" : {
"title.en" : {
"label" : null ,
"rules" : {
"required" : " This field is required. "
}
},
"title.pt" : {
"label" : null ,
"rules" : {
"required" : " This field is required. "
}
},
"description.en" : {
"label" : null ,
"rules" : {
"required" : " This field is required. " ,
"min_length" : " This field must be at least 10 characters long. "
}
},
"description.pt" : {
"label" : null ,
"rules" : {
"required" : " This field is required. " ,
"min_length" : " This field must be at least 10 characters long. "
}
}
}
}
Anda dapat menggunakan validasi khusus dan memasukkan pesan kesalahan.
if ( $ myCustomValidationFail ) {
$ validator -> addError (
' someFieldName ' ,
' Some field name ' ,
[ ' no_duplicate ' => ' A user already exists with that username ' )]
);
// ...
}
Memeriksa apakah nilainya hanya berisi karakter alfabet.
$ rules = [
' nickname ' => [
' label ' => ' Nickname ' ,
' rules ' => [
RuleEnum:: ALPHA ,
],
],
];
Nilai | alfa | alfa + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ✔️ | ✔️ |
'text with spaces' |
Memeriksa apakah nilainya hanya berisi karakter alfanumerik.
$ rules = [
' nickname ' => [
' label ' => ' Nickname ' ,
' rules ' => [
RuleEnum:: ALPHA_NUMERIC ,
],
],
];
Nilai | alfa_numerik | alfa_numerik + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ✔️ | ✔️ |
0 | ✔️ | ✔️ |
false | ||
[] | ||
-1 | ||
1 | ✔️ | ✔️ |
true | ||
'text' | ✔️ | ✔️ |
'text with spaces' |
Memeriksa apakah nilainya berada di antara dua nilai.
$ rules = [
' age ' => [
' label ' => ' Age ' ,
' rules ' => [
RuleEnum:: BETWEEN => [ 12 , 29 ],
],
],
];
Nilai | antara [1, 10] | antara [1, 10] + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ✔️ | ✔️ |
true | ||
'some text' |
Memeriksa apakah jumlah karakter nilai berada di antara nilai min dan maks.
$ rules = [
' nickname ' => [
' label ' => ' Nickname ' ,
' rules ' => [
RuleEnum:: BETWEEN_LENGTH => [ 3 , 15 ],
],
],
];
Nilai | antara_panjang [5,25] | antara_panjang [5,25] + wajib diisi |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
12345 | ✔️ | ✔️ |
true | ||
'text' | ||
'text with 23 characters' | ✔️ | ✔️ |
Memeriksa apakah nilainya merupakan nilai boolean. Mengembalikan nilai benar untuk 1/0, '1'/'0', 'hidup'/'mati', 'ya'/'tidak', benar/salah.
$ rules = [
' light ' => [
' label ' => ' Light ' ,
' rules ' => [
RuleEnum:: BOOLEAN_VALUE ,
],
],
];
Nilai | nilai_boolean | boolean_value + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ✔️ | ✔️ |
0 | ✔️ | ✔️ |
false | ✔️ | ✔️ |
[] | ||
-1 | ||
'1' | ✔️ | ✔️ |
1 | ✔️ | ✔️ |
true | ✔️ | ✔️ |
'text' | ||
'on' | ✔️ | ✔️ |
'off' | ✔️ | ✔️ |
'yes' | ✔️ | ✔️ |
'no' | ✔️ | ✔️ |
Memeriksa apakah nilainya ada dalam array.
$ rules = [
' priority ' => [
' label ' => ' Priority ' ,
' rules ' => [
RuleEnum:: CONTAINS => [ ' low ' , ' high ' ],
],
],
];
Nilai | berisi ['rendah','tinggi'] | berisi ['rendah','tinggi'] + wajib diisi |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'low' | ✔️ | ✔️ |
'high' | ✔️ | ✔️ |
Memeriksa apakah nilainya adalah tanggal valid (Ymd) atau format khusus.
$ rules = [
' dob ' => [
' label ' => ' Date of birth ' ,
' rules ' => [
RuleEnum:: DATE ,
],
],
];
$ rules = [
' dob ' => [
' label ' => ' Date of birth ' ,
' rules ' => [
RuleEnum:: DATE => [ ' d.m.Y ' ],
],
],
];
Nilai | tanggal [Ymd] | tanggal [Ymd] + wajib diisi |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'2020-09-30' | ✔️ | ✔️ |
Memeriksa apakah nilainya memiliki format email yang valid.
$ rules = [
' email ' => [
' label ' => ' Email ' ,
' rules ' => [
RuleEnum:: EMAIL ,
],
],
];
Nilai | email + diperlukan | |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'[email protected]' | ✔️ | ✔️ |
Memeriksa apakah nilainya sama dengan nilai lainnya.
$ rules = [
' repeat_password ' => [
' label ' => ' Repeat Password ' ,
' rules ' => [
RuleEnum:: EQUALS => [ ' password ' ],
],
],
];
Perbandingan dengan 'text'
Nilai | sama | sama dengan + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ✔️ | ✔️ |
'another text' |
Memeriksa apakah ukuran file tidak melebihi nilai yang diberikan.
Masukkan nilai dalam byte.
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: FILE_MAX_SIZE => [ 102400 ],
],
],
];
Perbandingan dengan 102400
byte
Nilai | file_max_size | file_max_size + diperlukan |
---|---|---|
null | ✔️ | |
50000 | ✔️ | ✔️ |
150000 |
Memeriksa apakah jenis file diperbolehkan.
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: FILE_MIME_TYPE => [ ' image/png ' , ' image/jpeg ' ],
],
],
];
Nilai | file_mime_type | file_mime_type + diperlukan |
---|---|---|
null | ✔️ | |
image/png | ✔️ | ✔️ |
text/plain |
Memeriksa apakah nilainya berupa angka floating point.
$ rules = [
' price ' => [
' label ' => ' Price ' ,
' rules ' => [
RuleEnum:: FLOAT_NUMBER ,
],
],
];
Nilai | angka_pelampung | float_number + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
12345 | ||
123.45 | ✔️ | ✔️ |
true | ||
'text' | ||
'text with spaces' |
Memeriksa apakah tinggi gambar tidak melebihi nilai yang ditentukan.
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: IMAGE_MAX_HEIGHT => [ 600 ],
],
],
];
Nilai | gambar_max_height | image_max_height + diperlukan |
---|---|---|
null | ✔️ | |
500 piksel | ✔️ | ✔️ |
1000 piksel |
Memeriksa apakah lebar gambar tidak melebihi nilai yang ditentukan.
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: IMAGE_MAX_WIDTH => [ 1000 ],
],
],
];
Nilai | gambar_max_width | image_max_width + diperlukan |
---|---|---|
null | ✔️ | |
500 piksel | ✔️ | ✔️ |
1500 piksel |
Memeriksa apakah tinggi gambar tidak kurang dari nilai yang ditentukan.
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: IMAGE_MIN_HEIGHT => [ 300 ],
],
],
];
Nilai | gambar_min_tinggi | image_min_height + diperlukan |
---|---|---|
null | ✔️ | |
100 piksel | ||
500 piksel | ✔️ | ✔️ |
Memeriksa apakah lebar gambar tidak kurang dari nilai yang diberikan.
$ rules = [
' profile_photo ' => [
' label ' => ' Profile Photo ' ,
' rules ' => [
RuleEnum:: IMAGE_MIN_WIDTH => [ 500 ],
],
],
];
Nilai | gambar_min_width | image_min_width + diperlukan |
---|---|---|
null | ✔️ | |
400 piksel | ||
600 piksel | ✔️ | ✔️ |
Memeriksa apakah nilainya bilangan bulat.
$ rules = [
' distance ' => [
' label ' => ' Distance ' ,
' rules ' => [
RuleEnum:: INTEGER ,
],
],
];
Nilai | numerik | numerik + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ✔️ | ✔️ |
false | ||
[] | ||
-1 | ✔️ | ✔️ |
1 | ✔️ | ✔️ |
true | ||
'text' |
Memeriksa apakah nilainya adalah alamat IP yang valid.
$ rules = [
' ip ' => [
' label ' => ' IP ' ,
' rules ' => [
RuleEnum:: IP ,
],
],
];
Nilai | aku p | ip + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'10.10.10.10' | ✔️ | ✔️ |
'2607:f0d0:1002:51::4' | ✔️ | ✔️ |
Memeriksa apakah nilainya adalah alamat IPv4 yang valid.
$ rules = [
' ipv4 ' => [
' label ' => ' IPv4 ' ,
' rules ' => [
RuleEnum:: IPV4 ,
],
],
];
Nilai | ipv4 | ipv4 + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'10.10.10.10' | ✔️ | ✔️ |
'2607:f0d0:1002:51::4' |
Memeriksa apakah nilainya adalah alamat IPv6 yang valid.
$ rules = [
' ipv6 ' => [
' label ' => ' IPv6 ' ,
' rules ' => [
RuleEnum:: IPV6 ,
],
],
];
Nilai | ipv6 | ipv6 + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'10.10.10.10' | ||
'2607:f0d0:1002:51::4' | ✔️ | ✔️ |
Memeriksa apakah nilainya tidak melebihi nilai yang diberikan.
$ rules = [
' people ' => [
' label ' => ' People ' ,
' rules ' => [
RuleEnum:: MAX => [ 5 ],
],
],
];
Nilai | maks | maks + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ✔️ | ✔️ |
0 | ✔️ | ✔️ |
false | ||
[] | ||
-1 | ✔️ | ✔️ |
1 | ✔️ | ✔️ |
true | ||
'text' | ||
12345 | ||
'12345' |
Memeriksa apakah jumlah karakter suatu nilai tidak melebihi nilai yang ditentukan.
$ rules = [
' nickname ' => [
' label ' => ' Nickname ' ,
' rules ' => [
RuleEnum:: MAX_LENGTH => [ 2 ],
],
],
];
Nilai | panjang_maks | max_length + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ✔️ | ✔️ |
0 | ✔️ | ✔️ |
false | ✔️ | ✔️ |
[] | ||
-1 | ✔️ | ✔️ |
1 | ✔️ | ✔️ |
true | ✔️ | ✔️ |
'text' | ||
12345 | ||
'12345' |
Memeriksa apakah nilainya tidak kurang dari nilai yang diberikan.
$ rules = [
' people ' => [
' label ' => ' People ' ,
' rules ' => [
RuleEnum:: MIN => [ 2 ],
],
],
];
Nilai | menit | menit + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
12345 | ✔️ | ✔️ |
'12345' | ✔️ | ✔️ |
Memeriksa apakah jumlah karakter suatu nilai tidak kurang dari nilai yang diberikan.
$ rules = [
' nickname ' => [
' label ' => ' Nickname ' ,
' rules ' => [
RuleEnum:: MIN_LENGTH => [ 2 ],
],
],
];
Nilai | panjang_maks | max_length + diperlukan |
---|---|---|
null | ✔️ | |
'' | ||
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ✔️ | ✔️ |
1 | ||
true | ||
'text' | ✔️ | ✔️ |
12345 | ✔️ | ✔️ |
'12345' | ✔️ | ✔️ |
Memeriksa apakah nilainya numerik.
$ rules = [
' age ' => [
' label ' => ' Age ' ,
' rules ' => [
RuleEnum:: NUMERIC ,
],
],
];
Nilai | numerik | numerik + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ✔️ | ✔️ |
0 | ✔️ | ✔️ |
false | ||
[] | ||
-1 | ✔️ | ✔️ |
1 | ✔️ | ✔️ |
true | ||
'text' |
Memeriksa apakah nilainya cocok dengan ekspresi reguler tertentu.
$ rules = [
' path ' => [
' label ' => ' Path ' ,
' rules ' => [
RuleEnum:: REGEX => [ ' //client/[0-9a-f]+$/ ' ],
],
],
];
Validasi dengan pola '//client/[0-9a-f]+$/'
Nilai | ekspresi reguler | ekspresi reguler + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'/client/77c9e105d1f548b29958f0512967de87' | ✔️ | ✔️ |
'/client/invalid-uuid' |
Memeriksa apakah nilainya tidak kosong.
$ rules = [
' name ' => [
' label ' => ' Name ' ,
' rules ' => [
RuleEnum:: REQUIRED ,
],
],
];
Nilai | diperlukan |
---|---|
null | |
'' | |
'0' | ✔️ |
0 | ✔️ |
false | ✔️ |
[] | |
-1 | ✔️ |
1 | ✔️ |
true | ✔️ |
'some text' | ✔️ |
Memeriksa apakah nilainya adalah Slug yang valid (misalnya hello-world_123).
$ rules = [
' slug ' => [
' label ' => ' Slug ' ,
' rules ' => [
RuleEnum:: SLUG ,
],
],
];
Nilai | siput | siput + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ✔️ | ✔️ |
'text with spaces' | ||
'hello-world_123' | ✔️ | ✔️ |
Memeriksa apakah nilainya adalah URL yang valid.
$ rules = [
' url ' => [
' label ' => ' URL ' ,
' rules ' => [
RuleEnum:: URL ,
],
],
];
Nilai | url | url + diperlukan |
---|---|---|
null | ✔️ | |
'' | ✔️ | |
'0' | ||
0 | ||
false | ||
[] | ||
-1 | ||
1 | ||
true | ||
'text' | ||
'http://www.some-domain.com' | ✔️ | ✔️ |
Ingin berkontribusi? Semua kontribusi dipersilakan. Baca panduan berkontribusi.
Jika Anda memiliki pertanyaan, tweet saya di @sandro_m_m atau buka terbitan.
Proyek ini dilisensikan di bawah Lisensi MIT - lihat file LISENSI untuk detailnya
**~ berbagi itu peduli ~**