devcoder-xyz/php-validator

PHP Validator是一个快速、可扩展且简单的PHP验证库,可让您轻松验证各种类型的数据。

2.0.0 2024-04-07 10:42 UTC

This package is auto-updated.

Last update: 2024-09-07 11:35:23 UTC


README

PHP Validator是一个快速、可扩展且简单的PHP验证库,可让您轻松验证各种类型的数据。

Latest Stable Version Total Downloads Latest Unstable Version License PHP Version Require

安装

您可以通过Composer安装此库。请确保您的项目符合最低PHP版本要求7.4。

composer require devcoder-xyz/php-validator

要求

  • PHP版本7.4或更高
  • PSR-7 HTTP消息所需的包(例如,guzzlehttp/psr7

用法

PHP Validator库使您能够通过预配置的验证规则以简单灵活的方式验证数据。以下是一些使用示例

示例1:电子邮件地址验证

验证电子邮件地址以确保它不为空并且符合标准电子邮件格式。

use DevCoder\Validator\Validation;
use DevCoder\Validator\Rules\NotNull;
use DevCoder\Validator\Rules\Email;

// Instantiate Validation object for email validation
$validation = new Validation([
    'email' => [new NotNull(), new Email()]
]);

// Example data array
$data = ['email' => 'john.doe@example.com'];

// Validate the data
if ($validation->validateArray($data) === true) {
    echo "Email is valid!";
} else {
    $errors = $validation->getErrors();
    echo "Validation errors: " . implode(", ", $errors['email']);
}

示例2:年龄验证

验证年龄以确保它是一个非空整数并且18岁或以上。

use DevCoder\Validator\Validation;
use DevCoder\Validator\Rules\NotNull;
use DevCoder\Validator\Rules\Integer;

// Instantiate Validation object for age validation
$validation = new Validation([
    'age' => [new NotNull(), new Integer(['min' => 18])]
]);

// Example data array
$data = ['age' => 25];

// Validate the data
if ($validation->validateArray($data) === true) {
    echo "Age is valid!";
} else {
    $errors = $validation->getErrors();
    echo "Validation errors: " . implode(", ", $errors['age']);
}

更多示例

让我们探索更多覆盖各种验证器的示例

用户名验证

确保用户名不为空,最小长度为3个字符,并且只包含字母数字字符。

use DevCoder\Validator\Validation;
use DevCoder\Validator\Rules\NotNull;
use DevCoder\Validator\Rules\Alphanumeric;
use DevCoder\Validator\Rules\StringLength;

// Instantiate Validation object for username validation
$validation = new Validation([
    'username' => [new NotNull(), new StringLength(['min' => 3]), new Alphanumeric()]
]);

// Example data array
$data = ['username' => 'john_doe123'];

// Validate the data
if ($validation->validateArray($data) === true) {
    echo "Username is valid!";
} else {
    $errors = $validation->getErrors();
    echo "Validation errors: " . implode(", ", $errors['username']);
}

URL验证

验证URL以确保它不为空并且是有效的URL格式。

use DevCoder\Validator\Validation;
use DevCoder\Validator\Rules\NotNull;
use DevCoder\Validator\Rules\Url;

// Instantiate Validation object for URL validation
$validation = new Validation([
    'website' => [new NotNull(), new Url()]
]);

// Example data array
$data = ['website' => 'https://example.com'];

// Validate the data
if ($validation->validateArray($data) === true) {
    echo "Website URL is valid!";
} else {
    $errors = $validation->getErrors();
    echo "Validation errors: " . implode(", ", $errors['website']);
}

数值验证

验证数值以确保它不为空并且代表一个有效的数值。

use DevCoder\Validator\Validation;
use DevCoder\Validator\Rules\NotNull;
use DevCoder\Validator\Rules\Numeric;

// Instantiate Validation object for numeric value validation
$validation = new Validation([
    'price' => [new NotNull(), new Numeric()]
]);

// Example data array
$data = ['price' => 99.99];

// Validate the data
if ($validation->validateArray($data) === true) {
    echo "Price is valid!";
} else {
    $errors = $validation->getErrors();
    echo "Validation errors: " . implode(", ", $errors['price']);
}

自定义验证规则

使用回调函数实现自定义验证规则。

use DevCoder\Validator\Validation;
use DevCoder\Validator\Rules\NotNull;
use DevCoder\Validator\Rules\Custom;

// Custom validation function to check if the value is a boolean
$isBoolean = function ($value) {
    return is_bool($value);
};

// Instantiate Validation object with a custom validation rule
$validation = new Validation([
    'active' => [new NotNull(), new Custom($isBoolean)]
]);

// Example data array
$data = ['active' => true];

// Validate the data
if ($validation->validateArray($data) === true) {
    echo "Value is valid!";
} else {
    $errors = $validation->getErrors();
    echo "Validation errors: " . implode(", ", $errors['active']);
}

当然!以下是一章,您可以将其添加到您的README中,专门介绍如何使用您的Validation类中的validate(ServerRequestInterface $request)方法。

使用validate(ServerRequestInterface $request)方法

Validation类提供了一个方便的方法validate(ServerRequestInterface $request)来验证从\Psr\Http\Message\ServerRequestInterface对象中提取的数据。此方法简化了在Web应用程序中接收的请求数据的验证过程。

示例1:验证用户注册表单

假设您有一个包含usernameemailpasswordage等字段的用户注册表单。以下是您如何使用validate方法来验证这些表单数据的方法

use DevCoder\Validator\Validation;
use DevCoder\Validator\Rules\NotNull;
use DevCoder\Validator\Rules\Email;
use DevCoder\Validator\Rules\Integer;

// Define validation rules for each field
$validation = new Validation([
    'username' => [new NotNull()],
    'email' => [new NotNull(), new Email()],
    'password' => [new NotNull()],
    'age' => [new NotNull(), new Integer()]
]);

// Assume $request is the \Psr\Http\Message\ServerRequestInterface object containing form data
if ($validation->validate($request) === true) {
    // Validation passed, retrieve validated data
    $validatedData = $validation->getData();
    // Process registration logic here (e.g., save to database)
    // $username = $validatedData['username'];
    // $email = $validatedData['email'];
    // $password = $validatedData['password'];
    // $age = $validatedData['age'];
    echo "Registration successful!";
} else {
    // Validation failed, retrieve validation errors
    $errors = $validation->getErrors();
    // Handle validation errors (e.g., display error messages to the user)
    echo "Validation errors: " . implode(", ", $errors);
}

在这个例子中

  • 我们使用为每个字段(usernameemailpasswordage)定义的验证规则实例化一个Validation对象。
  • 我们用包含表单数据的$request对象调用validate方法。
  • 如果验证通过(validate方法返回true),我们使用$validation->getData()检索验证后的数据并继续注册逻辑。
  • 如果验证失败,我们使用$validation->getErrors()检索验证错误并相应地处理它们。

示例2:验证API输入数据

考虑通过API端点验证输入数据。以下是您在这种情况下如何使用validate方法的方法

use DevCoder\Validator\Validation;
use DevCoder\Validator\Rules\NotNull;
use DevCoder\Validator\Rules\Numeric;

// Define validation rules for API input data
$validation = new Validation([
    'product_id' => [new NotNull(), new Numeric()],
    'quantity' => [new NotNull(), new Numeric()]
]);

// Assume $request is the \Psr\Http\Message\ServerRequestInterface object containing API input data
if ($validation->validate($request) === true) {
    // Validation passed, proceed with processing API request
    $validatedData = $validation->getData();
    // Extract validated data
    $productId = $validatedData['product_id'];
    $quantity = $validatedData['quantity'];
    echo "API request validated successfully!";
} else {
    // Validation failed, retrieve validation errors
    $errors = $validation->getErrors();
    // Handle validation errors (e.g., return error response to the client)
    echo "Validation errors: " . implode(", ", $errors);
}

在这个例子中

  • 我们为product_idquantity定义验证规则。
  • 我们使用包含API输入数据的$request对象调用validate方法。
  • 如果验证通过,我们使用$validation->getData()检索验证后的数据并继续处理API请求。
  • 如果验证失败,我们使用$validation->getErrors()检索验证错误并适当地处理它们。

其他功能

  • 简单接口:使用直观的接口轻松定义验证规则。
  • 可扩展性:通过实现 RuleInterface 接口来扩展库,以添加自定义验证规则。
  • 错误处理:为每个字段检索详细的验证错误。

许可证

此库是开源软件,根据 MIT 许可证 许可。