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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-22 15:17   11   0

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

错误:

从空值创建默认对象

码:

$res->success = false;

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

#1楼

尝试这个:

ini_set('error_reporting', E_STRICT);

#2楼

对于PHP <= 5.3,此消息为E_STRICT 。 从PHP 5.4开始,它很不幸地更改为E_WARNING 。 由于E_WARNING消息很有用,因此您不想完全禁用它们。

要摆脱此警告,您必须使用以下代码:

if (!isset($res))

$res = new stdClass();

$res->success = false;

这是完全等效的替换 。 它可以确保PHP默默地做同样的事情-不幸的是现在发出警告-隐式对象创建。 除非绝对确定不存在,否则应始终检查对象是否已存在。 Michael提供的代码通常不好,因为在某些情况下,根据情况的不同,有时可能已在同一位置将对象定义了。

#3楼

引起此问题的原因是您正在分配一个未启动的对象实例。 例如:

您的情况:

$user->email = 'exy@gmail.com';

解:

$user = new User;

$user->email = 'exy@gmail.com';

#4楼

如果您有数组并向其中添加对象,请尝试此操作。

$product_details = array();

foreach ($products_in_store as $key => $objects) {

$product_details[$key] = new stdClass(); //the magic

$product_details[$key]->product_id = $objects->id;

//see new object member created on the fly without warning.

}

这将发送对象 数组以供以后使用!

#5楼

只是,

$res = (object)array("success"=>false); // $res->success = bool(false);

要么

$res = (object)array(); // object(stdClass)

$res = new stdClass(); // old method

$res->success = !!0; // bool(false)

$res->success = false; // bool(false)

$res->success = (bool)0; // bool(false)

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP