mortimer333/validate

验证您从预定义模式或单个方法获取的数据

1.0.0 2021-03-31 12:06 UTC

This package is auto-updated.

Last update: 2024-09-04 22:58:09 UTC


README

验证您从预定义模式或单个方法获取的数据

  $spec = [
    "set" => [
      "user_id" => [ "int"          , "ID"    ],
      "login"   => [ "string"       , "Login" ],
      "name"    => [ "string_empty" , "Name"  ],       
      "bio"     => [ ["!js","!php" ], "Bio"   ],       
      "add"     => [ "array"        , "Additional", [  
          "set" => [
            "created" => ["types" => "date"]           
          ],
          "free" => ["string","int"]                   
        ]
      ]
    ]
  ];

  $data = [
    "user_id" => 0,
    "login"   => "login",
    "name"    => "name",
    "bio"     => "",
    "add"     => [
      "created" => "2020-01-01",
      "nana",
      "age" => 12
    ]
   ];

  if ( !Vali::dat( $data, $spec ) ) echo Vali::GetError();

安装

安装方法是通过composer及其packagist软件包validat/validat

  composer require validat/validat

如何使用

方法

所有函数都是静态的,所以您可以随时随地进行调用。如果您想检查您的数组是否为关联数组Vali::Assoc( array( 'a' => 'b' ) ),如果您想为验证分配名称以便更清晰地显示错误Vali::Assoc( array( 'a' => 'b' ), 'My assoc array' ),如果您想检查它是否不是关联数组Vali::Assoc( array( 'a' => 'b' ), 'My assoc array', true )或只是!Vali::Assoc( array( 'a' => 'b' ), 'My assoc array' )。下面将解释所有函数及其用法,但您已经了解了。

模式

模式是要验证的数据的预定义结构。如果您在API中收到多个嵌套变量,并且不想创建数百个if语句来验证它们,这将很有帮助。

结构分为setfree变量。首先验证set,然后验证所有剩余的free变量。您可以给它们分配名称(以获取更清晰的错误)和类型。可用类型

  • int
  • decimal
  • array
  • bool (布尔值)
  • date
  • string (如果字符串为空,则返回false)
  • string_empty (如果字符串为空,则返回true)
  • object
  • null
  • js (如果字符串包含javascript,则返回true)
  • php (如果字符串包含php,则返回true)
  • mail
  • json (检查字符串是否可用作JSON)

您也可以检查数据不是某种类型。只需在类型前添加!即可,它将反转它。例如:[..] 'desc' => ['name' => 'Description', 'types' => ['!js','!php']] [..]现在如果desc包含任何js或php,它将返回false。

如果您不希望使用string_empty,因为您的所有字符串都可以为空,只需将默认设置Vali::$_STRING_EMPTY更改为true。它将更改String函数的行为,使其在字符串为空时也返回true。

最后是错误:当出现错误(变量无效或不存在时),适当的错误将作为字符串保存到$_LAST_ERROR中。要获取错误,您可以使用Vali::GetError()

动态类型分配

很酷的是,您可以通过发送不同的数据并使用关键字this来更改变量的验证类型。脚本将查找当前作用域中指示的数据,并使用其内容作为types。示例

$spec = [
    "check" => [
      "set" => [
        "type" => [ "string"   , "Type of sent data" ],
        "data" => [ "this.type", "Data"              ]
      ]
    ]
  ];

  $data = [
    "type" => 'int',
    "data" => 'a',
  ];

  if ( !Vali::dat( $data, $spec ) ) echo Vali::GetError(); // output : Data is not a number.

函数

说明

  • $var - 要验证的变量
  • $name - 在错误中使用的名称
  • $reverse - 反转方法的操作

用法

  • Vali::Int($var, ?string $name = null, bool $reverse = false)
  • Vali::String($var, bool $empty = false, ?string $name = null, bool $reverse = false)
  • Vali::Decimal($var, ?string $name = null, bool $reverse = false)
  • Vali::Day($var, ?string $name = null, bool $reverse = false)
  • Vali::Bool($var, ?string $name = null, bool $reverse = false)
  • Vali::Null($var, ?string $name = null, bool $reverse = false)
  • Vali::Array($var, ?string $name = null, bool $empty = true, bool $reverse = false)
  • Vali::Assoc($var, ?string $name = null, bool $empty = true, bool $reverse = false)
  • Vali::对象($var, 可选 string $name = null, bool $reverse = false)
  • Vali::JS($var, 可选 string $name = null, bool $reverse = false)
  • Vali::PHP($var, 可选 string $name = null, bool $reverse = false)
  • Vali::JSON($var, 可选 string $name = null, bool $reverse = false)
  • Vali::Mail($var, 可选 string $name = null, bool $reverse = false)