krubio/perfect-validation

SOLID兼容的OOP验证

v0.1.3 2023-10-21 23:20 UTC

This package is auto-updated.

Last update: 2024-09-22 01:06:16 UTC


README

codecov

Scrutinizer Code Quality Code Coverage Build Status Code Intelligence Status

Coverage Maintainability Rating Code Smells Technical Debt Quality Gate Status Reliability Rating

Duplicated Lines (%) Vulnerabilities Bugs Security Rating

验证器类文档

Validator类负责使用不同的验证策略来验证数据。它允许您根据具体需求设置和切换不同的验证策略。

类签名

class Validator {
    private ValidationStrategy $strategy;

    public function __construct(ValidationStrategy $strategy);
    public function setValidationStrategy(ValidationStrategy $strategy): void;
    public function validateData($data): mixed;
    public function validateDataWithErrors($data): array;
}

构造函数

__construct(ValidationStrategy $strategy)

构造函数接受一个ValidationStrategy对象作为参数,该参数决定了要使用的特定验证策略。初始验证策略在对象创建时设置。

公共方法

setValidationStrategy(ValidationStrategy $strategy): void

此方法允许您通过提供ValidationStrategy对象作为参数来设置新的验证策略。它用新策略替换现有的验证策略。

validateData($data): mixed

validateData方法用于使用当前验证策略执行数据验证。它接受要验证的数据作为参数,并返回验证结果。

validateDataWithErrors($data): array

validateDataWithErrors方法执行数据验证,并返回包含验证状态和任何错误(如有)的数组。如果策略对象有getErrors方法,错误将包含在数组中。

  • 参数

    • $data:要验证的数据。
  • 返回值

    • 返回验证结果,这取决于正在使用的特定验证策略。它可以是布尔值(成功验证为true,否则为false)或其他基于策略实现的数据类型,或包含验证状态和错误的数组(如有)。

用法示例

以下是一个演示Validator类基本用法的示例

// Create a validator with a specific validation strategy
$validator = new Validator($requiredFieldsStrategy);

// Set a new validation strategy if needed
$validator->setValidationStrategy($customValidationStrategy);

// Perform data validation
$data = $_POST; // Example data to be validated
$result = $validator->validateData($data);

// Perform data validation with errors
$resultWithErrors = $validator->validateDataWithErrors($data);

// Check the validation result
if ($result === true) {
    echo "Validation passed! The data is valid.";
} elseif (isset($resultWithErrors['errors'])) {
    echo "Validation failed! Errors: " . implode(', ', $resultWithErrors['errors']);
} else {
    echo "Validation failed! Please check the data for errors.";
}

在上面的示例中

  1. Validator类使用初始验证策略($requiredFieldsStrategy)实例化。
  2. 如果需要,您可以使用setValidationStrategy方法切换到不同的验证策略。
  3. 使用要验证的数据($data)调用validateDatavalidateDataWithErrors方法。
  4. 检查返回结果以确定验证是否通过。
  5. 根据验证结果,您可以执行适当的操作或显示错误消息。

注意:示例中使用的特定验证策略($requiredFieldsStrategy$customValidationStrategy)未显示,因为它们取决于您的具体实现。