Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Creating default object from empty value in PHP?

Tags:

php

I see this error only after upgrading my PHP environment to PHP 5.4 and beyond. The error points to this line of code:

Error:

Creating default object from empty value

Code:

$res->success = false; 

Do I first need to declare my $res object?

like image 563
Paul Avatar asked Jan 17 '12 19:01

Paul


People also ask

How do you create a new object in PHP?

To create an Object in PHP, use the new operator to instantiate a class. If a value of any other type is converted to an object, a new instance of the stdClass built-in class is created.


1 Answers

Your new environment may have E_STRICT warnings enabled in error_reporting for PHP versions <= 5.3.x, or simply have error_reporting set to at least E_WARNING with PHP versions >= 5.4. That error is triggered when $res is NULL or not yet initialized:

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

PHP will report a different error message if $res is already initialized to some value but is not an object:

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

In order to comply with E_STRICT standards prior to PHP 5.4, or the normal E_WARNING error level in PHP >= 5.4, assuming you are trying to create a generic object and assign the property success, you need to declare $res as an object of stdClass in the global namespace:

$res = new \stdClass(); $res->success = false; 
like image 163
Michael Berkowski Avatar answered Sep 19 '22 17:09

Michael Berkowski