linmad / structure-type-validation
此包已废弃,不再维护。没有建议替代包。
结构体轻量级简单验证器
v0.0.1
2017-10-03 18:07 UTC
Requires
- php: >=7
Requires (Dev)
- php-coveralls/php-coveralls: ^1.0
- phpunit/phpunit: 6.3.*
This package is not auto-updated.
Last update: 2020-01-19 04:44:50 UTC
README
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