ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 验证器 Nette \ Utils \ Validators Nette \ Utils \ Validators是一个具有用于数据验证的有用函数的静态类。 所有示例假定创建了别名: ~~~ use Nette\Utils\Validators; ~~~ ## 规则 规则定义以与Latte过滤器相似的方式写入。 每个规则用竖线(|)分隔,并且可选地在冒号后面带参数后缀。 | 类型 | 规则 | | --- | --- | | bool, boolean | 布尔值 | | int, integer | 整数 | | float | 浮点数 | | number | 整数或浮点数 | | numeric | 数字,包括文本表示 | | numericint | 整数,包括文本表示 | | string |字符串 | | unicode | UTF-8 字符串 | | array | 数组 | | list | 非关联数组 | | object | 对象 | | resource | 资源 | | scalar | 返回 | | null | null | | Value | | | --- | --- | | email | email | | url | url | | none | “empty value” | **is($value, $expected)** 验证输入是否符合规则。 ~~~ Validators::is('Nette Framework', 'string:15'); // 15个字符长字符串 Validators::is('Nette Framework', 'string:8..'); // 最少8个字符长的字符串 Validators::is('Nette Framework', 'string:..32'); // 最多32个字符长的字符串 Validators::is('Nette Framework', 'string:8..32'); // 最少8个字符,最多32个字符 Validators::is(23, 'int:0..10'); // 0到10之间的整数 Validators::is(1, 'int|float'); // 整数或浮点数(可写为'number') ~~~ **assert($value, $expected, $label = ‘variable’)** 验证输入是否对应于规则,否则抛出断言异常。 ~~~ Validators::assert('Nette Framework', 'string:15'); // ok Validators::assert('Lorem ipsum dolor sit', 'string:78'); // exception // The variable expects to be string:78, string 'Lorem ipsum dolor sit' given. ~~~ **assertField($arr, $field, $expected = NULL, $label = “item ‘%’ in array”)** 验证数组项是否对应于规则,否则抛出断言异常 ~~~ $arr = ['nette' => 'framework']; Validators::assertField($arr, 'nette', 'string:15'); // ok Validators::assertField($arr, 'foo', 'string:15'); // exception // Missing item 'foo' in array. Validators::assertField($arr, 'nette', 'int'); // exception // The item 'nette' in array expects to be int, string 'framework' given. ~~~ ## 验证器 isNumericInt($value) 验证输入是否为整数。 ~~~ Validators::isNumericInt(23); // true Validators::isNumericInt(1.78); // false Validators::isNumericInt('42'); // true Validators::isNumericInt('3.14'); // false Validators::isNumericInt('nette'); // false ~~~ isNumeric($value) 验证输入是否为数字。 ~~~ Validators::isNumeric(23); // true Validators::isNumeric(1.78); // true Validators::isNumeric('42'); // true Validators::isNumeric('3.14'); // true Validators::isNumeric('nette'); // false ~~~ isCallable($value) 验证输入是否可调用。 ~~~ Validators::isCallable('Foo::bar'); // true Validators::isCallable([$foo, 'bar']); // true Validators::isCallable(['Foo::bar']); // true Validators::isCallable('Lorem ipsum dolor sit...'); // false Validators::isCallable(23); // false Validators::isCallable(FALSE); // false ~~~ isUnicode($value) 验证输入是否为有效的UTF-8字符串。 ~~~ Validators::isUnicode('nette'); // true Validators::isUnicode(''); // true Validators::isUnicode(1); // false ~~~ isNone($value) 验证输入是((无))“空”。 ~~~ Validators::isNone(0); // true Validators::isNone(''); // true Validators::isNone(FALSE); // true Validators::isNone(NULL); // true Validators::isNone('nette'); // false ~~~ isList($value) 验证输入是非关联数组。 ~~~ Validators::isList(['foo', 'bar']); // true Validators::isList(['foo' => 'Bar']); // false ~~~ isInRange($value, array $range) 验证输入是否在给定范围内。 ~~~ Validators::isInRange(5, [0, 5]); // true Validators::isInRange(23, [NULL, 5]); // false Validators::isInRange(23, [5]); // true Validators::isInRange(1, [5]); // false ~~~ isEmail($value) 验证输入是否是有效的电子邮件地址。 ~~~ Validators::isEmail('example@nette.org'); // true Validators::isEmail('nette'); // false ~~~ isUrl($value) 验证输入是否是有效的URL地址。 ~~~ Validators::isUrl('https://nette.org'); // true Validators::isUrl('nette'); // false ~~~