PHPackages                             haikara/verifier - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. haikara/verifier

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

haikara/verifier
================

0.1.0(1y ago)0111PHPPHP &gt;=8.0 &lt;8.4.0

Since Aug 20Pushed 1y ago1 watchersCompare

[ Source](https://github.com/HaikaraSakura/verifier)[ Packagist](https://packagist.org/packages/haikara/verifier)[ RSS](/packages/haikara-verifier/feed)WikiDiscussions main Synced today

READMEChangelog (1)Dependencies (1)Versions (2)Used By (1)

knp/verifier
============

[](#knpverifier)

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

インストール
------

[](#インストール)

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

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

[](#フィルタリング済みの値の取得)

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

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

`alnum`や`length`などの条件は記述した順に判定されるが、
`allowEmptyString`や`nullable`は各種条件より優先して判定される。

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

`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)

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

[](#rulesinteger)

```
// 桁数の指定
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');
```

###  Health Score

25

—

LowBetter than 35% of packages

Maintenance32

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 50% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

681d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/e2d62cb7d653d3982799fb210ad6d95b2d49ed74bfe137a335ff3793bdf164e6?d=identicon)[HaikaraSakura](/maintainers/HaikaraSakura)

---

Top Contributors

[![HaikaraSakura](https://avatars.githubusercontent.com/u/87011031?v=4)](https://github.com/HaikaraSakura "HaikaraSakura (1 commits)")[![t-mori-haikara](https://avatars.githubusercontent.com/u/87011031?v=4)](https://github.com/t-mori-haikara "t-mori-haikara (1 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/haikara-verifier/health.svg)

```
[![Health](https://phpackages.com/badges/haikara-verifier/health.svg)](https://phpackages.com/packages/haikara-verifier)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
