导读:在使用webman等第三方框架结合TP的think-validate验证组件时,遇到integer和float规则报错,因filter_var函数在PHP8中要求第三个参数$options为array或int类型,但组件传了null。解决方法一是将相关代码中的$param=null改为$param=0;二是在验证规则后加“,0”,如'peak' => 'float,0'。TP框架本身已修复此问题。
在webman等第三方框架中使用TP的think-validate验证组件时发现,使用内置规则验证integer和float时间会报错,报错信息如下:
TypeError: filter_var(): Argument #3 ($options) must be of type array|int, null given
原因是integer和float采用了filter_var函数进行验证,而filter_var函数的第三个参数$options在php高版本(我使用的是php8)中已经明确必须是array或者int类型。
function filter_var(mixed $value, int $filter = FILTER_DEFAULT, array|int $options = 0)
而think-validate组件中给的确是null类型 如下截图:

解决方法如下:
第一种方案 :修改上图中的$param=null 变成$param=0
第二种方案:在验证规则后面加上“,0”:如: 'peak' => 'float,0',
备注:直接使用TP框架没有这个问题,因为TP框架中已经修改了这个bug
关键词: webman TP think-validate
苏公网安备 32111202000338号