PHP code example of haikara / verifier

1. Go to this page and download the library: Download haikara/verifier library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

haikara / verifier example snippets


$verifier = new Knp\Verifier\Verifier\Verifier();

// テストデータはすべてバリデーションを通る値
$post = [
    'customer_name' => 'テスト',
    'customer_code' => 'A0000001',
    'category_id' => '1'
];

// 非空文字
$verifier->case(
    'customer_name', // 項目名
    $post['customer_name'] ?? '', // 検証する値
    Rules::string()->nonEmptyString() // 検証条件
);

// 半角英数字、8文字
$verifier->case(
    'customer_code',
    $post['customer_code'] ?? '',
    Rules::string()->alnum()->length(8)
);

// 半角数字、1以上
$verifier->case(
    'category_id',
    $post['category_id'] ?? null,
    Rules::integer()->min(1)
);

// すべての項目が条件を満たせばtrueが返る
var_dump($verifier->verify());

$post = [
    'year' => '2023'
    'month' => '13',
];

// 1994以上の整数
$verifier->case(
    'year',
    $post['year'] ?? null,
    Rules::integer()->min(1994)
);

// (int)2023が返る
$year = $verifier->getCase('year')->getValue();

// 1から12
$monthCase = $verifier->case(
    'month',
    $post['month'] ?? null,
    Rules::integer()->range(1, 12)
);

// 条件を満たさないのでfalseが返る
$month = $monthCase->getValue();

// 空文字が弾かれる
Rules::string()->alnum();

// 半角英数字、もしくは空文を許可したい場合
Rules::string()->alnum()->allowEmptyString();

// こちらでも可
Rules::string()->alnum()->allow('');

// 1以上の整数、もしくはnull
Rules::integer()->min(1)->nullable();

// こちらでも可
Rules::integer()->min(1)->allow(null);


### カスタムバリデーション

`add`で任意の条件を追加する。


$verifier
    ->case(
        'customer_name',
        $post['customer_name'] ?? '',
        Rules::string()->nonEmptyString()
    )
    ->setMessage('名前を入力ください。');

// 半角英数字、8文字
$verifier
    ->case(
        'customer_code',
        $post['customer_code'] ?? '',
        Rules::string()->alnum()->length(8)
    )
    ->setmessage('顧客コードを半角英数字8文字で入力ください。');

// 半角数字、1以上
$verifier
    ->case(
        'category_id',
        $post['category_id'] ?? null,
        Rules::integer()->min(1)
    )
    ->setMessage('カテゴリを選択ください。');

if (!$verifier->verify()) {
    // 検証で弾かれた項目のエラーメッセージの配列を取得
    $error_messages = $verifier->getMessages();
}

// 基本。空文字も含む全ての文字列を許可する。
Rules::string();

// 空文字を弾く場合。
Rules::integer()->notEmptyString();

// 文字数を検証する。mb_strlenで判定しているのでマルチバイト文字も可。
Rules::string()->length(8);

// 部分一致
Rules::string()->contain('探したい文字列');

// 前方一致
Rules::string()->startsWith('探したい文字列');

// 後方一致
Rules::string()->startsWith('探したい文字列');

// 半角英数字のみ
Rules::string()->alnum();

// 半角英字のみ
Rules::string()->alpha();

// 半角数字のみ
Rules::string()->digit();

Rules::string()->email();

Rules::string()->uuid();

// UUIDv4形式のみ
Rules::string()->uuid(4);

Rules::string()->pregMatch('/^探したい文字列/');

// 最低値の指定
Rules::integer()->min(1);

// 最大値の指定
Rules::integer()->min(1);

// 最低値と最大値の範囲指定
Rules::integer()->range(1, 12);

// 桁数の指定
Rules::integer()->length(4); // 4桁の整数のみ

// 拡張子の指定
Rules::file()->ext('.jpg', '.png', '.gif');

// thumb_で始まる、JPEGかPNGかGIFのファイル名
Rules::file()
    ->startsWith('thumb_')
    ->ext('.jpg', '.png', '.gif');