mmagyar/typage-php

使用类型类轻松验证数据

0.3.4 2016-02-01 21:22 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:14:39 UTC


README

使用类型类轻松验证数据

使用单个定义,您可以验证数据,无论是输入、输出还是测试。

使用相同的定义,您可以生成有效的、可读的json格式的描述。它已经在路线图上,可以将这些json转换回类型检查实例。

如果在检查过程中失败,您将收到一个异常,其中包含有关错误发生位置和错误的详细信息。

示例

值名称:request:myArray[1],数据:"hallo asdf",不符合正则表达式:/^\w+$/u

值名称:request:myNumber 的值为 55,大于最大值:34.234

您可以通过扩展 AbstractAny 类或使用带有验证闭包的 Any 类轻松添加自己的类型。

查看测试文件夹中的使用示例,并对其进行操作以了解其工作原理。

如何使用它的简单示例

$validator = new Object(
    "myNumber0to10"       => new Integer(0, 10),
    "myStringArray"       => new ArrayList(new Text()),
    "singleWord"          => new Text("/^\w+$/u"),
    "optionalNumber"      => new Nullable(new Double()),
    "optionalWithDefault" => new Either(new Text(), "Hello World")
);

$validatedData = $validator->check($input, "request");

为什么选择这个而不是 JSON schema?

除了 JSON schema 提供的所有功能外,此库还提供以下功能:

  • 默认情况下,所有属性都是必需的。
  • 错误处理默认自动通过异常完成,无需检查结果是否有错误。
  • 默认情况下不处理 Null 作为有意义的数据,必须显式声明属性为可空。
  • 易于扩展*。
  • 声明类型注解更安全、更简单,您始终知道从构造函数签名中可能的属性。
  • 它与同一语言相同,不一定需要单独的文件。
  • 您可以在应用程序中传递验证器,无需担心,因为它们是常规不可变的 PHP 对象。
  • 我们可以从定义生成 JSON schema** ;)

* 您可以直接获取 Any 类并编写验证函数,因为在某些情况下,您必须针对数据库进行验证。您可以轻松扩展 AbstractAny 类以创建自己的类型。

**语法略有不同