Hi, this doesnt work because static vars are bound to his class and are not inherited by a child class. maybe this would be work with php6 or a other 5.x version. (Same behavior like the singleton pattern getInstance() abstract class stuff)
-- Marco > Hi all, > > I'd like to be able to do the following: > > > <?php > > class Base { > > public static $var = 'hello'; > > public function someFunc() { > echo self::$var; // Currently maps to Base::$var > echo $this::$var; // Should map to Child::$var > } > > } > > class Child extends Base { > > public static $var = 'hello'; > > } > > $class = 'Child'; > > $obj = new $class(); // This works. > > echo $class::$var; // This doesn't. Should map to Child::$var > > > ?> > > > ...in other words: I'd like to be able to access static class > variables from inside an instance of the Base and/or Child classes. > I'd also like to be able to access them dynamically. > ($className::$variable) > > The only way to do this at the moment (to my knowledge at least) is to > create functions in the Child class that returns its static variables. > The downside of this is that those functions most likely will be very > common (in my case they are) and should therefore belong in the base > class. Hence: $this::$variable > > At the moment there is no way to access static variables from outside > of the class dynamically. As a workaround for this I'm currently > creating a temporary instance (new $type()) to access them dynamically > with a __get() function in all the derived child classes. > > There are ways to do it with class constants and the constant > functions. But it's not very elegant and class constants can't hold > arrays and/or objects. > > I have no idea what the implications would be. Just thought it would > be a nice addition to the language. :) Hope I didn't overlook some > existing PHP feature that already allows me to do this. :| > > > Cheers, > > Bart de Boer > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php