On Mon, 2004-11-08 at 11:18, Marcus Boerger wrote: > Hello Timm, > > you won't be able to tell from inside __call() whether a static or > non static method was meant.
isset($this) does work fine. > The same holds for __get() and __set(). > Also if we start using such code we'd need a class constructor. Why? > Thus this dicussion is leading to the following set of new magics: [...] Instead of this: How about an extra (third) parameter $context to __call() which holds either object $this or string $classname. The signature would then be: mixed __call(string $name, array $args [, mixed $context]); Checking whether __call() was statically invoked could either be performed via code such as: is_object($context) ? 'in context of '.get_class($context) : 'statically in class '.$context On Mon, 2004-11-08 at 00:26, Andi Gutmans wrote: > In most cases method overloading is used for objects and not for classes > (for example, initiating a SOAP object and then calling methods on it.). > It doesn't make sense to mix these two things because it would lead to > confusion what context the method was called in. You would either need > another call back or pass a flag to __call() and in my opinion just doesn't > seem to be worth it. I think an extra flag wouldn't really hurt. No BC issue btw (mentioned in another mail), extra parameters are always ignored. Just like the set_error_handler() callback which you can add the array $context parameter to. - Timm -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php