ホームページ >PHPフレームワーク >ThinkPHP >ThinkPHP6 でのデータ検証を理解する

ThinkPHP6 でのデータ検証を理解する

WBOY
WBOYオリジナル
2023-06-20 22:45:081851ブラウズ

ThinkPHP6 は現在最も人気のある PHP 開発フレームワークの 1 つであり、多くの PHP 開発者が開発にこれを使用することを好みます。優れたアプリケーションにはユーザー入力データの合法性検証が必要となるため、開発プロセスにおいてデータ検証は非常に重要な部分となります。この記事では、ThinkPHP6でデータ検証を実装する方法を詳しく紹介します。

  1. 基本的な考え方

ThinkPHP6 のデータ検証はバリデーターの概念に基づいています。つまり、データを検証するにはバリデーター オブジェクトを作成する必要があります。バリデーター・オブジェクトを作成するときは、そのオブジェクトの検証ルールを指定し、検証のために validate メソッドを呼び出す必要があります。検証が失敗した場合は検証エラー情報が返され、それ以外の場合は true が返されます。以下は簡単な例です:

use thinkValidate;

$data = [
    'name'  => 'thinkphp',
    'email' => 'thinkphp@qq.com',
    'age'   => 18
];

$validate = new Validate([
    'name'  => 'require|max:25',
    'email' => 'email',
    'age'   => 'number|between:1,120',
]);

if (!$validate->check($data)) {
    dump($validate->getError());
}

上記のコードでは、まず配列 $data を定義します。これには、検証する必要があるデータが含まれています。次に、バリデータ オブジェクト $validate を作成し、それに 3 つの検証ルールを設定しました: 名前フィールドは空にすることはできず、最大 25 文字まで可能です。電子メール フィールドは有効な電子メール アドレスでなければなりません。年齢フィールドは数値でなければなりません。 1 ~ 120 の間。最後に、check メソッドを呼び出してデータを検証します。検証に失敗した場合はエラーメッセージが出力されます。

  1. 検証ルールの詳細な説明

上記の例では、require、max、email、number、 between などの一般的な検証ルールを使用しました。以下に、一般的に使用されるいくつかの検証ルールとその使用法を紹介します。

  1. require

このルールは、フィールドを空にできないことを指定するために使用されます。使用法は次のとおりです。

'username' => 'require'
  1. max,min

このルールは、フィールドの最大長または最小長を制限するために使用されます。使用法は次のとおりです。

'username' => 'max:25'
'password' => 'min:8'
  1. email

このルールは、フィールドが有効な電子メール アドレスである必要があることを指定するために使用されます。使用法は次のとおりです。

'email' => 'email'
  1. alpha,alphaNum

このルールは、フィールドに文字または文字と数字の組み合わせのみを使用できることを指定するために使用されます。使用法は次のとおりです。

'username' => 'alpha'
'password' => 'alphaNum'
  1. regex

このルールは、フィールドが指定された正規表現に一致する必要があることを指定するために使用されます。使用法は次のとおりです。

'username' => 'regex:^[a-z]+$'
  1. unique

このルールは、フィールド値がデータベース内で一意である必要があることを指定するために使用されます。使用法は次のとおりです。

'email' => 'unique:user,email'

上の例では、unique の後のパラメータは、ユーザー テーブルの電子メール フィールドの値が一意である必要があることを指定します。

  1. in

このルールは、フィールド値が指定された範囲内にある必要があることを指定するために使用されます。使用法は次のとおりです。

'gender' => 'in:0,1'
  1. between

このルールは、フィールド値が指定された範囲内にある必要があることを指定するために使用されます。使用法は次のとおりです。

'age' => 'between:1,120'
  1. confirm

このルールは、2 つのフィールドが等しくなければならないことを指定するために使用されます。使用法は次のとおりです。

'password_confirm' => 'confirm:password'

上の例では、2 つのフィールド、password_confirm とpassword が等しい必要があります。

  1. カスタム検証ルール

特定のニーズを満たすためにカスタム検証ルールを使用する必要がある場合があります。この場合、addRule メソッドを使用して検証ルールをカスタマイズできます。 . .たとえば、テキスト ボックスの内容に指定したキーワードが含まれている必要があることを確認したい場合は、次のようなルールを定義できます。

use thinkValidate;

Validate::rule('my_rule', function($value, $rule) {
    return strpos($value, $rule) !== false;
});

$validate = new Validate([
    'content' => 'my_rule:thinkphp'
]);

if (!$validate->check($data)) {
    dump($validate->getError());
}

上記のコードでは、最初にカスタム ルール my_rule を静的メソッド ルール 、その使用法は他のルールと同じです。次に、バリデーターでこのルールを使用して、content フィールドの値に thinkphp キーワードが含まれている必要があることを確認しました。

  1. シーン検証

異なるシナリオでは、同じフィールドに対して異なる検証ルールを使用する必要がある場合があります。たとえば、ユーザー登録情報とユーザー変更情報の両方を使用します。各シナリオでは、電子メール フィールドに異なる検証ルールを適用する必要があります。現時点では、ニーズを満たすためにシナリオ検証を使用できます。バリデータ オブジェクトの作成時にシーン名を指定し、シーンごとに異なる検証ルールを設定できます。例:

use thinkValidate;

$data = [
    'email' => 'thinkphp@qq.com',
    'password' => '123456',
];

$validate = new Validate([
    'email' => 'require|email|unique:user,email',
    'password' => 'require|min:6'
]);

// 假设当前为用户修改资料场景
$validate->scene('edit', function($validate) {
    $validate->rule('email', 'require|email');
});

if (!$validate->scene('edit')->check($data)) {
    dump($validate->getError());
}

上記の例では、最初にバリデータ オブジェクト $validate を定義し、電子メール フィールドとパスワード フィールドの検証ルールを設定します。次に、シーン メソッドを使用して現在のシーンを編集として指定し、電子メール フィールドの検証ルールを指定します。最後に、check メソッドを呼び出して確認します。検証に失敗した場合はエラーメッセージが出力されます。

  1. 多言語サポート

ThinkPHP6 は多言語検証エラー メッセージをサポートしています。これは、対応するエラー メッセージを validate.php ファイルに追加することで実現できます。たとえば、中国語のエラー情報を電子メール フィールドに追加したい場合は、次のように設定できます。

return [
    'email' => [
        'require' => '邮箱必须填写!',
        'unique'  => '该邮箱已被注册!',
        'email'   => '邮箱格式不正确!'
    ]
];

この設定ファイルは /config/validate.php に保存されており、対応するエラーを取得できます。検証中に getError メソッドを通じて情報を取得します。

  1. 終了

上記は、検証ルール、カスタム検証ルール、シナリオ検証、多言語サポートを含む、ThinkPHP6 でのデータ検証の基本的な使用法です。これらの機能を使用すると、ユーザー入力データをより簡単に検証し、アプリケーションのセキュリティと合法性を確保できます。この記事がすべての開発者にとって役立つことを願っています。

以上がThinkPHP6 でのデータ検証を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。