Experiment: Pass by Reference in PHP, part 2
April 11, 2009
Code:
<?php
class testObj {
private $flag=FALSE;
public function set_flag() {
$this->flag = TRUE;
}
public function get_flag() {
return $this->flag;
}
}
function test_container() {
static $_test_obj;
if (!isset($_test_obj)) $_test_obj = new testObj();
return array(&$_test_obj);
}
$array = test_container();
$test_obj_1 = $array[0];
$array = test_container();
$test_obj_2 = $array[0];
print sprintf("<li>object 1, before set flag: %s</li>\n",
var_export($test_obj_1->get_flag(), TRUE));
print sprintf("<li>object 2, before set flag: %s</li>\n",
var_export($test_obj_2->get_flag(), TRUE));
$test_obj_1->set_flag();
print sprintf("<li>object 1, after set flag: %s</li>\n",
var_export($test_obj_1->get_flag(), TRUE));
print sprintf("<li>object 2, after set flag: %s</li>\n",
var_export($test_obj_2->get_flag(), TRUE));
?>Result: