一尘不染

从PHP中的空值创建默认对象?

php

仅在将我的PHP环境升级到PHP 5.4及更高版本后,我才看到此错误。错误指向以下代码行:

错误:

从空值创建默认对象

码:

$res->success = false;

我首先需要声明我的$res对象吗?


阅读 593

收藏
2020-05-26

共1个答案

一尘不染

您的新环境可能已为<=
5.3.x的PHP版本启用了E_STRICT警告,或者仅在至少=>
5.4的PHP版本中设置了警告。当触发了错误的或者尚未初始化:error_reporting``error_reporting``E_WARNING``$res``NULL

$res = NULL;
$res->success = false; // Warning: Creating default object from empty value

如果$res已经初始化为某个值但不是对象,则PHP将报告不同的错误消息:

$res = 33;
$res->success = false; // Warning: Attempt to assign property of non-object

为了符合E_STRICTPHP 5.4之前的标准或E_WARNINGPHP> =
5.4中的常规错误级别,假设您尝试创建一个通用对象并分配该属性success,则需要在全局名称空间中声明$res为的对象stdClass

$res = new \stdClass();
$res->success = false;
2020-05-26