Validator JSON yang dirancang untuk menjadi elegan dan mudah digunakan.
Validasi JSON adalah tugas umum dalam pengujian API otomatis, JSON-Schema kompleks dan tidak mudah digunakan, jadi saya membuat perpustakaan ini untuk menyederhanakan proses validasi JSON dan membuat validasi JSON lebih elegan dan menyenangkan.
Anda dapat menginstal Validator JSON versi terbaru dengan perintah berikut:
composer require rethink/json-validator:dev-master Secara default, validator JSON dikirimkan dengan tujuh jenis jenis bawaan:
Selain tipe bawaan, dimungkinkan untuk menentukan jenis kustom Anda melalui metode defineType() .
Cuplikan kode berikut menunjukkan bagaimana kita dapat menentukan jenis kustom melalui array atau callable.
$ validator -> defineType ( ' User ' , [
' name ' => ' string ' ,
' gender ' => ' string ' ,
' age ' => ' ?integer ' ,
' rating ' => ' ?integer|boolean ' ,
]); Contoh ini mendefinisikan jenis User bernama kustom, yang memiliki empat properti. Nama dan jenis kelamin membutuhkan string, usia membutuhkan bilangan bulat tetapi memungkinkan untuk tidak dapat dibatalkan, dan peringkat yang dibutuhkan untuk bilangan bulat atau boolean dan memungkinkan menjadi nol.
$ validator -> defineType ( ' UserCollection ' , [ ' User ' ]); Ini mendefinisikan UserCollection sebagai array User . Untuk menentukan jenis daftar, definisi tipe banyak hanya berisi satu elemen.
$ validator -> defineType ( ' timestamp ' , function ( $ value ) {
if ((! is_string ( $ value ) && ! is_numeric ( $ value )) || strtotime ( $ value ) === false ) {
return false ;
}
$ date = date_parse ( $ value );
return checkdate ( $ date [ ' month ' ], $ date [ ' day ' ], $ date [ ' year ' ]);
});Dimungkinkan juga untuk mendefinisikan tipe menggunakan callable, yang berguna untuk melakukan beberapa validasi pada data. Seperti contoh di atas yang ditentukan jenis cap waktu, yang mengharuskan data menjadi datetime yang valid.
Kami dapat memvalidasi jenis dengan dua langkah berikut:
use rethink jsv Validator ;
$ validator = new Validator ();
// $validator->defineType(...) Add your custom type if necessary $ matched = $ validator -> matches ( $ data , ' User ' );
if ( $ matched ) {
// Validation passed
} else {
$ errors = $ validator -> getErrors ();
} Contoh ini akan memeriksa apakah $data yang diberikan cocok dengan jenis User , jika validasi gagal, kita bisa mendapatkan pesan kesalahan melalui metode getErrors() .
Dalam beberapa situasi, kita mungkin ingin suatu objek cocok dengan tipe kita secara ketat, kita dapat menggunakan strict mode untuk mencapai ini, berikut ini adalah contohnya:
$ data = [
' name ' => ' Bob ' ,
' gender ' => ' Male ' ,
' age ' => 19 ,
' phone ' => null , // This property is unnecessary
];
$ matched = $ validator -> matches ( $ data , ' User ' , true ); // strict mode is turned on
var_dump ( $ matched ); // false is returned