Re: $var::$static
| From: | Marco Kaiser | Date: | Sat, 26 May 2007 11:57:31 +0000 |
| Subject: | Re: $var::$static | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-29802@lists.php.net to get a copy of this message | ||
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
>