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

Reply via email to