How do I create a PHP static class property at runtime (dynamically)?

Lucas Batistussi picture Lucas Batistussi · Mar 23, 2012 · Viewed 9.3k times · Source

I'd like to do something like this:

public static function createDynamic(){
    $mydynamicvar = 'module'; 
    self::$mydynamicvar = $value;
}

and be able to access the property from within the class with

$value = self::$module;

Answer

AndrewR picture AndrewR · Mar 23, 2012

I don't know exactly why you would want to do this, but this works. You have to access the dynamic 'variables' like a function because there is no __getStatic() magic method in PHP yet.

class myclass{
    static $myvariablearray = array();

    public static function createDynamic($variable, $value){
        self::$myvariablearray[$variable] = $value;
    }

    public static function __callstatic($name, $arguments){
        return self::$myvariablearray[$name];
    }
}

myclass::createDynamic('module', 'test');
echo myclass::module();