php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #21486 $this pointer not always pointing to the right object
Submitted: 2003-01-07 06:19 UTC Modified: 2003-01-07 19:29 UTC
From: corinl at gmx dot de Assigned:
Status: Not a bug Package: Class/Object related
PHP Version: 4.3.0 OS: windows
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: corinl at gmx dot de
New email:
PHP Version: OS:

 

 [2003-01-07 06:19 UTC] 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!!

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2003-01-07 07:39 UTC] 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.
 [2004-02-18 16:25 UTC] phpbugs at ynx dot de
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!
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 22 11:01:30 2024 UTC