2009-12-22 79 views
17

我有以下PHP5代码:如何修复PHP严格错误“从空值创建默认对象”?

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

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

PHP Strict standards: Creating default object from empty value

我怎样才能解决这个问题?

+1

只是好奇,你以前在哪里看到这样的风格? $ request - > {“header”} - > {“sessionid”} – MindStalker 2009-12-22 23:58:30

+0

我在看到JSON请求时看到了它。 – Jake 2009-12-23 00:04:11

回答

40

空不是一个对象,所以你不能给它赋值。从你在做什么看起来你需要一个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"; 

我会建议使用阵列,它与(可能)相同的底层实现一个整洁的语法。

+0

我无法让它与stdClass()一起工作..但是,array()风格工作得很好... 谢谢 – Jake 2009-12-23 00:15:38

1

不要尝试设置空值的属性?改为使用关联数组。

13

摆脱$请求= NULL,代之以:

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

您正在尝试写为NULL,而不是实际的对象。

4

取消错误:

error_reporting(0); 

要修正此错误:

$request = new stdClass(); 

心连心

相关问题