当您访问看似未设置的属性时,通常会出现 PHP 的“从空值创建默认对象”错误多变的。此错误是 PHP 5.4 及更高版本中严格错误处理的结果。
当 PHP 尝试为还不是对象或显式设置为 NULL 的变量初始化默认对象时,会触发此错误。例如:
$res = NULL; $res->success = false;
在 PHP 5.3 及更早版本中,此代码不会产生任何错误。但是,在 PHP 5.4 及更高版本中,启用了 E_STRICT 警告(如果将 error_reporting 设置为至少此级别,则启用 E_WARNING),从而导致“从空值创建默认对象”错误。
$res 需要先声明吗?
不,将 $res 声明为对象是没有必要。但是,在访问其属性之前,必须确保 $res 是一个对象。为此,您可以将其初始化为特定类的对象,也可以使用通用 stdClass 对象:
// Initialize as a specific class $res = new MyClassName(); // Initialize as a generic object $res = new \stdClass();
一旦 $res 是一个对象,您就可以访问和修改其属性,而无需遇到“从空值创建默认对象”错误。
$res->success = false; // No error
以上是为什么 PHP 会抛出'从空值创建默认对象”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!