Bug #7515 [Com]: very weird, magic, invisible referencing
| From: | yann-gael at gueheneuc dot net | Date: | Tue, 22 Nov 2011 23:31:29 +0000 |
| Subject: | Bug #7515 [Com]: very weird, magic, invisible referencing | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-165438@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=7515&edit=1
ID: 7515
Comment by: yann-gael at gueheneuc dot net
Reported by: waldschrott@php.net
Summary: very weird, magic, invisible referencing
Status: Closed
Type: Bug
Package: Scripting Engine problem
Operating System: linux + win2k
PHP Version: 4.0 Latest CVS (28/10/2000)
Block user comment: N
Private report: N
New Comment:
PS. I narrowed down the test:
class obj {
function method() {
}
}
$o->root=new obj();
var_dump($o);
$o->root->method();
var_dump($o);
and its output with PHP 4.2.3 compiled for m68k-amigaos:
object(stdClass)(1) {
["root"]=>
object(obj)(0) {
}
}
object(stdClass)(1) {
["root"]=>
&object(obj)(0) {
}
}
(note the ampersand in the second dump), while, with PHP 5.2.14 for Windows, the output is:
object(stdClass)#2 (1) {
["root"]=>
object(obj)#1 (0) {
}
}
object(stdClass)#2 (1) {
["root"]=>
object(obj)#1 (0) {
}
}
Does it make sense that in the second assign "$o->root->method();", the method is
viewed as a reference to and object?
Please forgive me if my question is silly, I am a newbie in OO PHP.
Previous Comments:
------------------------------------------------------------------------
[2011-11-22 22:44:58] yann-gael at gueheneuc dot net
I compiled PHP 4.2.3 for m68k-amigaos and the test case tests/lang/029.php fails. Could you tell me
more about what has been changed into the Zend engine to fix this bug so that I can track this
change and the bug?
(I don't think that I should reopen this bug for m68k-amigaos, should I?)
Thanks!
Tygre
------------------------------------------------------------------------
[2002-06-03 09:33:02] mfischer@php.net
Zend Engine 2 fixes this.
------------------------------------------------------------------------
[2002-04-11 15:28:02] rodif_bl@php.net
I have reproducted this problem... and am pretty sure what is exactly is going wrong...
<?
class foo
{
function foo()
{
$this->bar = new bar();
}
}
class bar
{
function bar()
{
$this->tmp = "bar";
}
function do_nothing()
{
}
}
$foo = new foo();
$foo->bar->tmp = "test";
$foo2 = $foo;
$foo2->bar->tmp = "foo";
var_dump($foo);
var_dump($foo2);
// now....
$foo->bar->do_nothing();
$foo3 = $foo;
$foo3->bar->tmp = "bug";
var_dump($foo);
var_dump($foo3);
?>
Basically when you call a method from a objects member object. It creates that member as a
refrence.
/* i set this to critical because i think this should be resloved right away */
- Brad
------------------------------------------------------------------------
[2002-01-11 16:11:31] bryce at redhat dot com
I'm looking at putting php 4.1.1 into the next RH release
however I noticed that this bug still seems to be happening
(From make test)
Running tests in /usr/src/redhat/php-4.1.1//tests/lang
...
OO Bug Test (Bug #7515) (029.phpt) ... failed
[root@dhcpd201 lang]# cat 029.exp
success
[root@dhcpd201 lang]# cat 029.out
failure
I this something that can either be fixed or can I turn a
blind eye to this..
Phil
=--=
------------------------------------------------------------------------
[2001-12-12 08:14:56] yohgaki@php.net
Is this still a issue? This report is updated a year ago...
If this report is outstanding, PHP Version is better to be updated...
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=7515
--
Edit this bug report at https://bugs.php.net/bug.php?id=7515&edit=1