如何修复PHP Strict错误“从空值创建默认对象”?

时间:2009-12-22 23:54:05

标签: php

我有以下PHP5代码:

$request = NULL;
$request->{"header"}->{"sessionid"}        =  $_SESSION['testSession'];
$request->{"header"}->{"type"}             =  "request";

第2行和第3行产生以下错误:

  

PHP严格标准:从空值创建默认对象

如何解决此错误?

4 个答案:

答案 0 :(得分:40)

Null不是对象,因此您无法为其指定值。从你正在做的事情来看,你需要一个associative array。如果您已设置使用对象,则可以使用stdClass

//using arrays
$request = array();
$request["header"]["sessionid"]        =  $_SESSION['testSession'];
$request["header"]["type"]             =  "request";

//using stdClass
$request = new stdClass();
$request->header = new stdClass();
$request->header->sessionid        =  $_SESSION['testSession'];
$request->header->type             =  "request";

我建议使用数组,因为它是一个更简洁的语法(可能)是相同的底层实现。

答案 1 :(得分:13)

摆脱$ request = NULL并替换为:

$request = new stdClass;
$request->header = new stdClass;

您正在尝试写入NULL而不是实际对象。

答案 2 :(得分:4)

要取消错误:

error_reporting(0);

修复错误:

$request = new stdClass();

HTH

答案 3 :(得分:1)

不要尝试在null值上设置属性?改为使用关联数组。