this is old subject everyone is tired of i'm sure. but since large changes have been made to call_user_func[_array] recently, i want to confirm:
if an object calls one of its methods ($thing->foo()), any static-type method calls made inside there - self::a(), parent::a(), fezbar::a() -
will have $this defined, pointing to original calling object.
self:: and parent:: are always relative to the containing class,
regardless of this.
two exceptions:
- the method is declared as 'static'; if so, $this is never set
- the method is called via call_user_func or call_user_func_array; if so, $this is not set
the very last part seems like it *might* be a bug, or it might be a decision - that call_user_func(array('class','function'),$arg) will always force class::function() to behave as if declared statically.
that is a bit of a problem for self:: and parent:: but that is ok if it is how it must be.
if anyone can say about this, it would be kind.
ps - i looked in old mail, sure this had been discussed - topic came up, but nothing for sure, except introduction of 'static' to prevent $this, which solves opposite problem :)
-- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php