Bug #67807 [NEW]: Object passed by reference becomes a string
| From: | atlantisnova at gmail dot com | Date: | Fri, 08 Aug 2014 15:11:23 +0000 |
| Subject: | Bug #67807 [NEW]: Object passed by reference becomes a string | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-187025@lists.php.net to get a copy of this message | ||
From: atlantisnova at gmail dot com
Operating system: Debian Linux
PHP version: Irrelevant
Package: Class/Object related
Bug Type: Bug
Bug description:Object passed by reference becomes a string
Description:
------------
My version is PHP 5.4.4-14+deb7u7... Also affects PHP 5.4.4-14+deb7u11 -
the production server we discovered it on.
It seems that any sort of notice in a function into which an object has
been passed by reference replaces the reference with a string containing
its class name.
Code executed after the pass-by-reference also receives the string
rather than the original object.
Thanks!
Test script:
---------------
class A{
function do_stuff(&$b) {
$defined = 0;
#trigger_error("If I fixed the undefined variable but enabled this
line instead, it will also turn b from an object into a string! So
user-triggered notices bork it as well.");
$x = $undefined || $defined ? 14 : 0;
var_dump('In function:', $b);
}
}
class B{}
$a = new A();
$b = new B();
$a->do_stuff($b);
var_dump('After function:', $b);
Expected result:
----------------
$b should be an object of class B
Actual result:
--------------
$b is the string 'B'
--
Edit bug report at https://bugs.php.net/bug.php?id=67807&edit=1
--