linmad/structure-type-validation

此包已废弃,不再维护。没有建议替代包。

结构体轻量级简单验证器

v0.0.1 2017-10-03 18:07 UTC

This package is not auto-updated.

Last update: 2020-01-19 04:44:50 UTC


README

Build Status Coverage Status

Light and simple structure validator. Do validation of yours structures as expected.

使用场景

通常,如果需要处理大型或复杂结构,并确保键和值类型符合预期。例如,你处理某个API。你的系统接收结构体,你必须对其进行验证,验证方式有多种。其中一种方式是,你可以创建一个必须键和类型列表来验证结构体。它允许你在执行数据序列化等复杂操作之前,先排除错误的工作。

工作原理

分析器将比较你的结构体与结构映射的严格类型。然后如果发现某些不匹配,它将在桶中记录错误,并在处理后你可以在桶中查看错误。最后,你会收到一个布尔值,从而可以判断结构体是否符合预期的映射。

换句话说,它只是简单地遍历你的树,检查所需的键是否存在以及值类型是否正确。

使用示例

例如,根据你的需求,给定的结构体数据

$paymentReq = '{
    "amount": 10500,
    "ccy": "EUR",
    "account_id": 42,
    "order_description": "facere repellat provident occaecati excepturi optio reprehenderit"
}';

你想要使用“模式”、“映射”或“结构”来覆盖它。例如你的映射

$payementReqMap = [
    'amount' => 'integer',
    'ccy' => 'string',
    'account_id' => 'integer'
];

因此,在你的结构映射中,键“order_description”不是必须的,你可以接受它或跳过。但其他键是严格的,必须是必须的,因此不允许传递无效数据到你的系统中。

// Create instance
$analyzer = new Analyzer();

// Check if structure same as expected in map
$isValid = $analyzer->isValidStructure($paymentReq, $payementReqMap); // return bool, valid or not as expected

if ($isValid) {
    // Make some magic
    $this->paymentProvider->takeRequest($paymentReq);
}
// Or use other magic