devcoder-xyz / php-validator
PHP Validator是一个快速、可扩展且简单的PHP验证库,可让您轻松验证各种类型的数据。
Requires
- php: >=7.4
- ext-ctype: *
- ext-json: *
- psr/http-message: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.4
README
PHP Validator是一个快速、可扩展且简单的PHP验证库,可让您轻松验证各种类型的数据。
安装
您可以通过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:验证用户注册表单
假设您有一个包含username
、email
、password
和age
等字段的用户注册表单。以下是您如何使用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); }
在这个例子中
- 我们使用为每个字段(
username
、email
、password
、age
)定义的验证规则实例化一个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_id
和quantity
定义验证规则。 - 我们使用包含API输入数据的
$request
对象调用validate
方法。 - 如果验证通过,我们使用
$validation->getData()
检索验证后的数据并继续处理API请求。 - 如果验证失败,我们使用
$validation->getErrors()
检索验证错误并适当地处理它们。
其他功能
- 简单接口:使用直观的接口轻松定义验证规则。
- 可扩展性:通过实现
RuleInterface
接口来扩展库,以添加自定义验证规则。 - 错误处理:为每个字段检索详细的验证错误。
许可证
此库是开源软件,根据 MIT 许可证 许可。