Home ›
You cannot reassign an object in a function and expect the outside object to change You cannot reassign an object in a function and expect the outside object to change
Submitted by Benjamin Melançon on June 5, 2013 - 10:38pm
Stefan found a bug introduced in a contributed module when the authors took a passed-in object and, instead of only updating its properties as before, tried to change it by assigning a whole new object to the variable name.
This does not work:
<?php
$test_object = new StdClass();
$test_object->property = "banana";
function
refruit($change_object) {
$new_object = new StdClass();
$new_object->property = "pineapple";
$change_object = $new_object;
}
refruit($test_object);
print
$test_object->property;
?>
Still says 'banana'.
<?php
$test_object = new StdClass();
$test_object->property = "banana";
function
refruit($change_object) {
$change_object->property = "pineapple";
}
refruit($test_object);
print
$test_object->property;
?>
Says 'pineapple'.
Comments
Post new comment