承接 haikara/verifier 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

haikara/verifier

Composer 安装命令:

composer require haikara/verifier

包简介

README 文档

README

簡潔なシグネチャで条件を指定できるバリデーションライブラリ。

インストール

composer require knp/verifier

基本的な使い方

$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());

フィルタリング済みの値の取得

IntegerDoubleNumberによる検証は内部で型変換がおこなわれる。
型変換された後の値を取得したい場合、下記のように記述する。

$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('');

整数値の検証条件を指定しつつ、nullも許可する例。

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

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

alnumlengthなどの条件は記述した順に判定されるが、
allowEmptyStringnullableは各種条件より優先して判定される。

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

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

```PHP
// メールアドレス、.co.jpのみ許可
Rules::string()->email()
    ->add(
        'email_domain_cojp', // 検証条件名。無理矢理にでも何か指定する。
        fn ($value) => str_ends_with($value, '.co.jp') // 検証関数。検証する値を受け取り、bool値を返すことが必要。
    );

エラーメッセージ

検証項目にエラーメッセージを登録することができる。

$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();

UUID

UUID形式の文字列かどうかの検証。

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

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

正規表現

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

数値の検証

  • Rules::integer
  • Rules::float
  • Rules::number

共通の使い方

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

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

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

Rules::integer()

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

ファイル名

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

Rules::string()の拡張なので、以下のようにも記述できる

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

haikara/verifier 适用场景与选型建议

haikara/verifier 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 11 次下载、GitHub Stars 达 0, 最近一次更新时间为 2024 年 08 月 20 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 haikara/verifier 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 haikara/verifier 我们能提供哪些服务?
定制开发 / 二次开发

基于 haikara/verifier 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 11
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 9
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2024-08-20