Search code examples
phpstatic-variables

PHP: Getting a value of a static variable of an unknown subclass


Possible Duplicate:
From the string name of a class, can I get a static variable?

Somewhere in a parent class, I need to find the value of a static variable of one of the possible child classes, determined by the current instance.

I wrote:

  $class = get_class($this);
  $value = isset($class::$foo['bar']) ? $class::$foo['bar'] : 5;

In this example, the subclass whose name is in $class has a public static $foo.

I know using $class::$foo['bar'] is not a very beautiful piece of code, but it gets the job done on PHP 5.3.4.

In PHP 5.2.6 though, I am getting a syntax error:
Parse error: syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM, expecting ',' or ')'

Is there an alternative way that would work on PHP 5.2.4+ that would get the same thing done?


Solution

  • EDIT: Reflection is better.

    You can try the get_class_vars method. No access to PHP 5.2.6, but this works in 5.2.11...

    class Test {
        public static $foo;
    
        function __construct() {
            echo("...Constructing...<br/>");
            Test::$foo = array();
            Test::$foo['bar'] = 42;
        }
    
        function __toString() {
            return "Test";
        }
    }
    
    
    $className = 'Test';
    $class = new $className();
    
    $vars = get_class_vars($className);
    
    echo($vars['foo']['bar'] . "<br/>");
    

    Output:

    ...Constructing...
    42