老项目从php5.5升级至7.1,发现dd
方法(包括dump
方法)使用时会产生一个NOTICE级别的错误: A non well formed numeric value encountered
具体错误的地方是:
vendor\symfony\var-dumper\Cloner\VarCloner.php(298)
原因是因为php7.0以后,十六进制的字串不再被认为是数字。官方的RFC在此:
https://wiki.php.net/rfc/remove_hex_support_in_numeric_strings
1. 因为只是NOTICE级别,直接使用@
符号抑制错误提示即可。
2. 数据类型强转
对这一行处理,强转成int类型即可。
self::$hashMask = (int)substr(ob_get_clean(), 17);
还有一种方法
在对应的Controller顶部加上:
ini_set("error_reporting","E_ALL & ~E_NOTICE");
屏蔽警告信息