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:
>
> 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.
>
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php