call_user_func_arrayで参照を返す
38度の熱が上がって冷めてきたあとでふと思いました。
どうしてもきれいにはいきませんが、初心に返って返値としてではなく引数と渡すとできると思います。
<?php class Foo { var $s = "foo"; function output() { print $this->s."\n"; } } class Bar { function change(&$obj, $s) { $obj->s = $s; return true; } } $foo = new Foo(); $bar = new Bar(); $copy =& $foo; $foo->output(); $copy->output(); call_user_func_array(array(&$bar, 'change'), array(&$foo, 'bar')); $foo->output(); $copy->output(); ?>