3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php function &get_instance_ref() { static $obj; echo 'Static object: '; var_dump($obj); if (!isset($obj)) { // Assign a reference to the static variable $obj = &new stdclass; } $obj->property++; return $obj; } function &get_instance_noref() { static $obj; global $property; $property=3; $obj->property=2; echo "aa".$property; echo 'Static object: '; var_dump($obj); $obj = new stdclass; $obj->property++; return $obj; } $obj1 = get_instance_ref(); $still_obj1 = get_instance_ref(); echo "\n"; $obj2 = get_instance_noref(); $still_obj2 = get_instance_noref(); $still_obj3 = get_instance_noref(); ?>
Output for hhvm-3.10.0 - 3.12.0
Static object: NULL Static object: NULL Warning: Creating default object from empty value in /in/PbXi8 on line 19 aa3Static object: object(stdClass)#3 (1) { ["property"]=> int(2) } aa3Static object: object(stdClass)#4 (1) { ["property"]=> int(2) } aa3Static object: object(stdClass)#5 (1) { ["property"]=> int(2) }
Output for 5.5.24 - 5.6.28
Deprecated: Assigning the return value of new by reference is deprecated in /in/PbXi8 on line 9 Static object: NULL Notice: Undefined property: stdClass::$property in /in/PbXi8 on line 11 Static object: NULL Notice: Undefined property: stdClass::$property in /in/PbXi8 on line 11 Warning: Creating default object from empty value in /in/PbXi8 on line 19 aa3Static object: object(stdClass)#3 (1) { ["property"]=> int(2) } Notice: Undefined property: stdClass::$property in /in/PbXi8 on line 27 aa3Static object: object(stdClass)#4 (1) { ["property"]=> int(2) } Notice: Undefined property: stdClass::$property in /in/PbXi8 on line 27 aa3Static object: object(stdClass)#3 (1) { ["property"]=> int(2) } Notice: Undefined property: stdClass::$property in /in/PbXi8 on line 27
Output for 5.4.0 - 5.4.45
Deprecated: Assigning the return value of new by reference is deprecated in /in/PbXi8 on line 9 Static object: NULL Static object: NULL Warning: Creating default object from empty value in /in/PbXi8 on line 19 aa3Static object: object(stdClass)#3 (1) { ["property"]=> int(2) } aa3Static object: object(stdClass)#4 (1) { ["property"]=> int(2) } aa3Static object: object(stdClass)#3 (1) { ["property"]=> int(2) }
Output for 5.3.0 - 5.3.29
Deprecated: Assigning the return value of new by reference is deprecated in /in/PbXi8 on line 9 Static object: NULL Static object: NULL Strict Standards: Creating default object from empty value in /in/PbXi8 on line 19 aa3Static object: object(stdClass)#3 (1) { ["property"]=> int(2) } aa3Static object: object(stdClass)#4 (1) { ["property"]=> int(2) } aa3Static object: object(stdClass)#3 (1) { ["property"]=> int(2) }
Output for 5.0.0 - 5.2.17
Strict Standards: Assigning the return value of new by reference is deprecated in /in/PbXi8 on line 9 Static object: NULL Static object: NULL Strict Standards: Creating default object from empty value in /in/PbXi8 on line 19 aa3Static object: object(stdClass)#3 (1) { ["property"]=> int(2) } aa3Static object: object(stdClass)#4 (1) { ["property"]=> int(2) } aa3Static object: object(stdClass)#3 (1) { ["property"]=> int(2) }
Output for 4.3.0 - 4.4.9
Static object: NULL Notice: Undefined property: property in /in/PbXi8 on line 11 Static object: NULL Notice: Undefined property: property in /in/PbXi8 on line 11 aa3Static object: object(stdClass)(1) { ["property"]=> int(2) } Notice: Undefined property: property in /in/PbXi8 on line 27 aa3Static object: object(stdClass)(1) { ["property"]=> int(2) } Notice: Undefined property: property in /in/PbXi8 on line 27 aa3Static object: object(stdClass)(1) { ["property"]=> int(2) } Notice: Undefined property: property in /in/PbXi8 on line 27