public function f5() { $this->o2 = new stdClass(); return $this->o2; } public function &f6() { return $this->a1; } public function f7(&$x) { $x = 2; } } $foo = new foo(); $foo->f1()[0] = 1; var_dump($foo->a1); $foo->f2()[0] = 1; var_dump($foo->a2); $foo->f3()[0] = 1; var_dump($foo->a3); $foo->f4()->a = 1; var_dump($foo->o1); $foo->f5()->a = 1; var_dump($foo->o2); $foo->a1[0] = 1; $foo->f7($foo->f6()[0]); var_dump($foo->a1[0]); $foo->f1()[0]++; var_dump($foo->a1[0]); $foo->f6()[0]++;