#21486 [Com]: $this pointer not always pointing to the right object
| From: | phpbugs at ynx dot de | Date: | Wed, 18 Feb 2004 21:25:45 +0000 |
| Subject: | #21486 [Com]: $this pointer not always pointing to the right object | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-55163@lists.php.net to get a copy of this message | ||
ID: 21486
Comment by: phpbugs at ynx dot de
Reported By: corinl at gmx dot de
Status: Bogus
Bug Type: Class/Object related
Operating System: windows
PHP Version: 4.3.0
New Comment:
Hey, I think this is something that really needs to be fixed!
The original testcase shows that $this evaluates to the instance of cb
even in ca::debug, which is definitly NOT the behaviour one might
expect!
I think $this should always evaluate to nothing when accessed inside a
function that is called statically!
Previous Comments:
------------------------------------------------------------------------
[2003-01-07 07:39:38] alan_k@php.net
$this is that of the calling class when you use static method calls,
The official line is dont rely on this behaviour as
it may change...
ref: php-dev mailing list.
------------------------------------------------------------------------
[2003-01-07 06:19:33] corinl at gmx dot de
hi,
i found that the $this pointer does not always point to the current
class, as it is supposted to.
run the following example code:
-----
class ca
{
function debug()
{
echo("ca::debug -> ");
print_r($this);
echo("<br>");
}
}
class cb
{
function debug()
{
echo("cb::debug -> ");
print_r($this);
echo("<br>");
}
function test()
{
cb::debug();
ca::debug();
}
}
$b = new cb;
$b->test();
-----
output is:
cb::debug -> cb Object ( )
ca::debug -> cb Object ( )
but should'nt it be:
cb::debug -> cb Object ( )
ca::debug -> ca Object ( )
it seems that when a class is called like class::methode from within
another class, the this pointer points to the calling class, not the
current running class!!
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=21486&edit=1