behaviour of static calls to regular methods

php.internals

Ard Biesheuvel

22 years ago
Is the fact that the following code works intentional ? class S { function func() { A::meth(); } } class A { private $bar; function meth() { $this->bar="bar"; } function func() { S::func(); echo "$this->bar\n"; } } $a = new A; $a->func(); ... so A::$this is accessed through two static calls to different classes.
-- Ard

Johannes Schlueter

22 years ago
Hi, yes, afaik it's intentional. This was made for making parent::foo() work. Here's a shorter (at least a bit shorter *g*) example of this behavior: <?php class foo { function a() { bar::b(); } } class bar { function b() { var_dump($this); } } $foo = new foo(); $foo->a(); // Calls bar::b() ?> Prints: object(foo)#1 (0) { } So in a static call $this holds the instance of the calling object. johannes Ard Biesheuvel wrote:

Andi Gutmans

22 years ago
Yeah for BC sake, but if you define the function's as static explicitly it won't work. At 01:54 PM 6/21/2004 +0200, Ard Biesheuvel wrote: