Bug #67807 [Opn->Fbk]: Object passed by reference becomes a string
| From: | requinix@php.net | Date: | Fri, 08 Aug 2014 17:18:15 +0000 |
| Subject: | Bug #67807 [Opn->Fbk]: Object passed by reference becomes a string | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-187028@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=67807&edit=1
ID: 67807
Updated by: requinix@php.net
Reported by: atlantisnova at gmail dot com
Summary: Object passed by reference becomes a string
-Status: Open
+Status: Feedback
Type: Bug
Package: Class/Object related
Operating System: Debian Linux
-PHP Version: Irrelevant
+PHP Version: 5.4.4
Block user comment: N
Private report: N
New Comment:
http://3v4l.org/VqsdQ Works for me.
That's the exact repro script you used? And rather than some description of the actual result,
how about posting the actual, actual result?
Previous Comments:
------------------------------------------------------------------------
[2014-08-08 15:11:22] atlantisnova at gmail dot com
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 this bug report at https://bugs.php.net/bug.php?id=67807&edit=1