fork download
  1. <?php
  2.  
  3. class Foo {
  4.  
  5. private $values;
  6.  
  7. public function __construct() {
  8.  
  9. $this->values = array();
  10.  
  11. }
  12.  
  13. public function addElement($key, $value) {
  14.  
  15. $this->values[$key] = $value;
  16.  
  17. }
  18.  
  19. public function &getValues() {
  20.  
  21. return $this->values;
  22.  
  23. }
  24.  
  25. }
  26.  
  27. $foo = new Foo();
  28. $foo->addElement("hello", "John Doe");
  29. //WHY DOESN'T THE FOLLOWING LINE ALTER $foo->values ?
  30. $foo->getValues()["goodbye"] = "Jane Doe";
  31.  
  32. var_dump($foo);
Success #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
object(Foo)#1 (1) {
  ["values":"Foo":private]=>
  array(2) {
    ["hello"]=>
    string(8) "John Doe"
    ["goodbye"]=>
    string(8) "Jane Doe"
  }
}