当我尝试在新的本地计算机上部署 Symfony 2.8 项目时,我在代码的多个位置遇到此错误:
"Warning: get_class() expects parameter 1 to be object, null given"
在stackoverflow上没有找到这样的案例,花了一些时间找出原因。
正如关于这个问题的其他地方所述,在 PHP 7.2 中get_class http://php.net/manual/en/function.get-class.php手册指出:
注意:从 PHP 7.2.0 开始,不再允许显式传递 NULL 作为对象。该参数仍然是可选的,并且从类内部调用不带参数的 get_class() 也可以,但传递 NULL 现在会发出 E_WARNING 通知。
正如你发现的那样你自己的答案 https://stackoverflow.com/a/49751992/3536236.
However你说:
所以将php版本降级到7.1解决了问题。
降级 PHP 通常不是解决问题的最佳或长期方法*;相反,你需要包装get_class
in a checker函数如is_object http://php.net/manual/en/function.is-object.php,或反之,is_null
:
$baz = new class();
$className = false; // catch all if $baz is not an object
if(is_object($baz)){
$className = get_class($baz);
}
- 正如所述尼科·哈塞 https://stackoverflow.com/questions/49751991/get-class-expects-parameter-1-to-be-object-null-given/49752124#comment86519281_49752124
如果此问题出现在 Symfony 代码中,则仅更改 Symfony 代码并不是一个好主意。由于升级 Symfony 不是一个选择,正如 OPs 答案中所述,保留 7.1 似乎是最好的解决方案
我想说,虽然“修复”Symphony 代码可能很麻烦,但我建议添加限定符is_object
Symphony 代码,然后在最新的 Symphony 版本发布时更新到它(我希望这能解决这个问题)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)