mortimer333 / validate
验证您从预定义模式或单个方法获取的数据
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语句来验证它们,这将很有帮助。
结构分为set
和free
变量。首先验证set
,然后验证所有剩余的free
变量。您可以给它们分配名称(以获取更清晰的错误)和类型。可用类型
- int
- decimal
- array
- bool (布尔值)
- date
- string (如果字符串为空,则返回false)
- string_empty (如果字符串为空,则返回true)
- object
- null
- js (如果字符串包含javascript,则返回true)
- php (如果字符串包含php,则返回true)
- 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)