>PHP 프레임워크 >ThinkPHP >ThinkPHP6에서 유효성 검사기를 사용하는 방법

ThinkPHP6에서 유효성 검사기를 사용하는 방법

王林
王林원래의
2023-06-21 09:45:183207검색

인터넷의 지속적인 발전으로 점점 더 많은 사람들이 웹사이트 개발에 PHP를 사용하기 시작했습니다. PHP에서는 프레임워크를 사용하면 개발 효율성이 크게 향상될 수 있으며 ThinkPHP는 매우 인기 있는 프레임워크입니다. ThinkPHP에서 유효성 검사기는 사용자가 제출한 데이터를 검증하여 데이터의 정확성을 보장하는 데 도움이 되는 매우 중요한 구성 요소입니다. 그래서 이번 글에서는 ThinkPHP6에서 유효성 검사기를 사용하는 방법을 소개하겠습니다.

1. 검증기란 무엇입니까

검증기는 데이터의 정확성을 보장하기 위해 사용자가 제출한 데이터의 형식, 길이, 적법성 등을 검증하는 데 사용되는 도구입니다. ThinkPHP6에서 유효성 검사기는 독립적인 구성 요소이며 Validation 클래스를 상속하여 사용자 정의 유효성 검사기를 구현할 수 있습니다.

2. 유효성 검사기의 기본 사용법

ThinkPHP6에서는 유효성 검사기의 사용이 매우 간단합니다. 먼저, 유효성을 검사해야 하는 필드와 해당 유효성 검사 규칙을 지정하기 위해 유효성 검사기 클래스를 정의해야 합니다. 예는 다음과 같습니다.

<?php

namespace appindexalidate;

use thinkValidate;

class User extends Validate
{
    protected $rule = [
        'name'  =>  'require|max:25',
        'email' =>  'email',
    ];

    protected $message = [
        'name.require'  =>  '名称不能为空',
        'name.max'      =>  '名称最多不能超过25个字符',
        'email'         =>  '邮箱格式错误',
    ];
}

위 코드에서는 먼저 User라는 유효성 검사기 클래스를 정의하고 유효성을 검사해야 하는 필드와 해당 유효성 검사 규칙을 지정합니다. 예를 들어 이름 필드는 비어 있지 않고 최대 25자라는 규칙을 충족해야 하며, 이메일 필드는 이메일 형식 규칙을 충족해야 합니다. 동시에 각 확인 규칙의 오류 메시지를 저장하기 위해 $message 배열도 정의합니다.

검증기 클래스를 정의한 후 컨트롤러에서 이 검증기를 사용하여 데이터를 확인할 수 있습니다. 예는 다음과 같습니다.

<?php

namespace appindexcontroller;

use thinkController;
use appindexalidateUser;

class Index extends Controller
{
    public function index()
    {
        $data = [
            'name'  =>  'Tom',
            'email' =>  'test@example.com',
        ];

        $validate = new User();

        if (!$validate->check($data)) {
            dump($validate->getError());
            // 验证失败
        }
        else {
            // 验证成功
        }
    }
}

위 코드에서는 먼저 확인해야 하는 데이터를 저장하기 위해 $data 배열을 정의합니다. 그런 다음 사용자 유효성 검사기 개체를 인스턴스화하고 check 메서드를 사용하여 $data 배열을 확인합니다. 확인에 실패하면 getError 메소드를 사용하여 오류 메시지를 얻을 수 있습니다. 확인에 성공하면 다른 작업을 계속할 수 있습니다.

3. 유효성 검사기의 고급 사용

ThinkPHP6은 기본 유효성 검사 규칙 외에도 보다 복잡한 유효성 검사 요구 사항을 충족하기 위해 다양한 고급 유효성 검사기 기능을 제공합니다.

  1. 시나리오 검증

때때로 작업마다 검증해야 하는 필드가 다를 수 있습니다. 이때 시나리오 검증을 사용하여 이 문제를 해결할 수 있습니다. ThinkPHP6에서는 유효성 검사기 클래스에서 다양한 시나리오를 정의하고 컨트롤러에서 사용해야 하는 현재 시나리오를 지정할 수 있습니다. 예는 다음과 같습니다.

<?php

namespace appindexalidate;

use thinkValidate;

class User extends Validate
{
    protected $rule = [
        'name'  =>  'require|max:25',
        'email' =>  'email',
    ];

    protected $message = [
        'name.require'  =>  '名称不能为空',
        'name.max'      =>  '名称最多不能超过25个字符',
        'email'         =>  '邮箱格式错误',
    ];

    protected $scene = [
        'add'   =>  ['name', 'email'],
        'edit'  =>  ['name'],
    ];
}

위 코드에서는 추가와 편집이라는 두 가지 시나리오를 정의합니다. 그 중 추가 시나리오에서는 이름과 이메일 필드만 확인하면 되고, 편집 시나리오에서는 이름 필드만 확인하면 됩니다. 이런 방식으로 컨트롤러에서 사용될 때 사용해야 하는 현재 장면을 지정할 수 있습니다.

$data = input('post.');
$validate = new User();
if (!$validate->scene('add')->check($data)) {
    // 验证失败
}
else {
    // 验证成功
}
  1. 사용자 정의 유효성 검사 규칙

기본 제공 유효성 검사 규칙 외에도 특정 요구 사항에 맞게 유효성 검사 규칙을 사용자 정의할 수도 있습니다. ThinkPHP6에서는 addRule 메소드를 통해 사용자 정의 유효성 검사 규칙을 추가할 수 있습니다. 예는 다음과 같습니다.

<?php

namespace appindexalidate;

use thinkValidate;

class User extends Validate
{
    protected $rule = [
        'email' =>  'email|checkEmail',
    ];

    protected $message = [
        'email.email'  =>  '邮箱格式错误',
        'email.checkEmail'  =>  '邮箱不允许注册',
    ];

    protected function checkEmail($value, $rule, $data)
    {
        if (in_array($value, ['admin@example.com', 'superadmin@example.com'])) {
            return false;
        }
        else {
            return true;
        }
    }
}

위 코드에서는 먼저 $email 필드의 유효성 검사 규칙에 checkEmail 규칙을 추가합니다. 그런 다음 checkEmail 규칙의 오류 메시지가 $message 배열에 정의됩니다. 마지막으로 checkEmail 메소드는 사용자 정의 확인 논리를 구현하기 위해 유효성 검사 클래스에 정의됩니다(이 예에서는 admin@example.com 및 superadmin@example.com이라는 두 개의 이메일 주소가 허용되지 않습니다). 이런 방식으로 데이터 검증을 수행할 때 checkEmail 메소드가 자동으로 호출되어 검증됩니다.

위는 ThinkPHP6의 검증기 기본 방법과 고급 사용법입니다. 유효성 검사기는 데이터의 정확성을 보장하고 코드의 가독성과 유지 관리성을 향상시킬 수 있는 매우 중요한 구성 요소입니다. 실제 개발에서는 실제 상황에 따라 유효성 검사기를 유연하게 사용해야 개발 작업에 도움이 됩니다.

위 내용은 ThinkPHP6에서 유효성 검사기를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.