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] [EMAIL PROTECTED]
$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