エレガントで使いやすいように設計されたJSONバリデーター。
JSON検証は自動APIテストで一般的なタスクであり、JSON-Schemaは複雑で使いやすいため、JSON検証プロセスを簡素化するためにこのライブラリを作成し、JSON検証をよりエレガントで楽しくしました。
次のコマンドを使用して、JSON Validatorの最新バージョンをインストールできます。
composer require rethink/json-validator:dev-master デフォルトでは、7種類の組み込みタイプで出荷されたJSONバリデーター:
組み込みのタイプに加えて、 defineType()メソッドを介してカスタムタイプを定義することができます。
次のコードスニペットは、配列または呼び出し可能なカスタムタイプをどのように定義できるかを示しています。
$ validator -> defineType ( ' User ' , [
' name ' => ' string ' ,
' gender ' => ' string ' ,
' age ' => ' ?integer ' ,
' rating ' => ' ?integer|boolean ' ,
]);この例は、4つのプロパティを持つUserという名前のカスタムタイプを定義しています。名前と性別は文字列であり、年齢は整数である必要がありますが、nullableであることを可能にし、整数またはブール値に必要な評価を可能にし、nullにすることができます。
$ validator -> defineType ( ' UserCollection ' , [ ' User ' ]);これにより、 UserCollection Userの配列であることが定義されます。リストタイプを定義するために、タイプの定義には1つの要素のみが含まれています。
$ 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 ' ]);
});また、コール可能なものを使用してタイプを定義することもできます。これは、データの検証を実行するのに役立ちます。上記の例が定義されたタイムスタンプタイプを定義しているように、データを有効なデータタイムにする必要があります。
次の2つのステップでタイプを検証できます。
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 ();
}この例では、指定された$dataタイプUserと一致するかどうかを確認します。検証が失敗した場合、 getErrors()メソッドを介してエラーメッセージを取得できます。
状況によっては、オブジェクトがタイプを厳密に一致させる必要がある場合があります。 strict modeを利用してこれを達成することができます。次の例は次のとおりです。
$ 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