User login

You cannot reassign an object in a function and expect the outside object to change

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

The content of this field is kept private and will not be shown publicly.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • You can use Markdown syntax to format and style the text. Also see Markdown Extra for tables, footnotes, and more.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <blockquote> <small> <h2> <h3> <h4> <h5> <h6> <sub> <sup> <p> <br> <strike> <table> <tr> <td> <thead> <th> <tbody> <tt> <output>
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".
  • Lines and paragraphs break automatically.

More information about formatting options

By submitting this form, you accept the Mollom privacy policy.