On Tue, 2004-02-03 at 20:14, Alan Knowles wrote: > It is a slightly annoying limitation.. - inherited static methods, cant > guess their called class... > I did look at a fix a while ago - it involved adding a pointer to the > called class name string, to the exectuter globals, whenever a > function is called in the engine... - then to retrieve it became > problematic as > - you cant really use a function as then it would assign the value again. > - no-one was too keen to have 'dynamic' constants... > > Actually - I AFAIR someone said that it may be fixed in PHP5 back then > :) - or suggested debug_backtrace.. (but I'm not sure if that is feasible)
It would seem that having $this set in a static method would be the best way to solve this. What is interesting is that static variables in a method seem to be scoped to a class, even when inherited. For example: class Foo { function & getStaticVar($var) { static $static_variables; return $static_variables[$var]; } } class Bar extends Foo { } $foo_foo = & Foo::getStaticVar('foo'); $bar_foo = & Bar::getStaticVar('foo'); $foo_foo = 1; $bar_foo = 2; // And so (Foo::getStaticVar('foo') != Bar::getStaticVar('foo')) == TRUE I use this to have static variables without having to define getStaticVar in every class I use. Since this works it would seem there is some static context for classes somewhere. Is there a plan to implement static variables in php5? If so there would be good reason for $this to be set for static methods in a class. If this were true I could use class_name($this) in a static method to achieve what I am looking for. If there is no current effort to implement static variables I would be willing to make a go at it, if no one is opposed and there is still time to add it to php5... -- Adam Bregenzer [EMAIL PROTECTED] http://adam.bregenzer.net/ -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php