From: roland at inkoeln dot com Operating system: Linux PHP version: 4.3.3 PHP Bug Type: Variables related Bug description: Call-time pass-by-reference has been deprecated but without it it's impossible to pass a object-reference via call_user_function
Description: ------------ You *must* use Call-time pass-by-reference to pass a object-reference when using call_user_function. In the example changeA() is declared to use passing by reference but it still doesn't work. I think call_user_function should either try to discover if it's passing by reference at runtime or just pass always by reference. Reproduce code: --------------- <?php class A { var $_id = 'A'; function printID() { print "A::id=[".$this->_id."]\n"; } function remote(&$obj_ref, $obj_method) { call_user_func(array(&$obj_ref, $obj_method), $this); // this on works: // call_user_func(array(&$obj_ref, $obj_method),&$this); } } class B { function changeA(&$obj) { $obj->_id = 'B'; $obj->printID(); } } $a = new A(); $b = new B(); $a->printID(); $a->remote($b, 'changeA'); $a->printID(); ?> Expected result: ---------------- A::id=[A] A::id=[B] A::id=[B] Actual result: -------------- A::id=[A] A::id=[B] A::id=[A] -- Edit bug report at http://bugs.php.net/?id=25419&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=25419&r=trysnapshot4 Try a CVS snapshot (php5): http://bugs.php.net/fix.php?id=25419&r=trysnapshot5 Fixed in CVS: http://bugs.php.net/fix.php?id=25419&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=25419&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=25419&r=needtrace Try newer version: http://bugs.php.net/fix.php?id=25419&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=25419&r=support Expected behavior: http://bugs.php.net/fix.php?id=25419&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=25419&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=25419&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=25419&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=25419&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=25419&r=dst IIS Stability: http://bugs.php.net/fix.php?id=25419&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=25419&r=gnused