array_walk_recursive
具体功能:
取出data数组( 即url地址传参 )中的每一个,调用filterValue,而过滤规则是filter数组(config/app.php中定义的default_filter)
然而,当url地址中传入参数/?s=index/index/index&m=20&s=10进行访问时
抛出 think\exception\ErrorException: Accessing static property think\Request::$hook as non static in…147 Stack trace异常
查看request.php 第147行
__call() 监视错误的方法调用,当调用的方法不存在产生错误时,运行此方法来避免。这里的method是filterValue,而这个函数真真确确存在的,是request的 private函数。对于出现的这个错误,我翻看了一下swoole4.4的最新特性:array_walk_recursive为swoole解决原生函数不可重入的问题,应该是swoole结合tp框架使用此函数导致的冲突。
具体解决办法:将array_walk_recursive函数屏蔽掉,data数组通过foreach循环遍历,即可完美解决此问题。swoole4.4以下版本亲测不会出现url地址传参问题。
如有不对的地方,敬请大神更正!!!