动态调用静态变量(数组)

Beb*_*rge 3 php methods static model class

这是我今天的问题.我正在构建(为了好玩)一个简单的模板引擎.基本的想法是我有一个像{blog:content}这样的标签,我在一个方法和一个动作中打破它.问题是当我想动态调用静态变量时,我得到以下错误.

Parse error: parse error, expecting `','' or `';''
Run Code Online (Sandbox Code Playgroud)

和代码:

 $class = 'Blog';
 $action = 'content';
 echo $class::$template[$action];
Run Code Online (Sandbox Code Playgroud)

$ template是我的类中的公共静态变量(数组),是我想要检索的那个.

Kur*_*aze 12

怎么样get_class_vars

class Blog {
    public static $template = array('content' => 'doodle');
}

Blog::$template['content'] = 'bubble';

$class = 'Blog';
$action = 'content';
$values = get_class_vars($class);

echo $values['template'][$action];
Run Code Online (Sandbox Code Playgroud)

输出'泡沫'


Phi*_*ber 5

您可能希望首先保存对静态数组的引用.

class Test
{
    public static $foo = array('x' => 'y');
}

$class  = 'Test';
$action = 'x';

$arr = &$class::$foo;
echo $arr[$action];
Run Code Online (Sandbox Code Playgroud)

对不起,所有的编辑......

编辑

echo $class::$foo[$action];
Run Code Online (Sandbox Code Playgroud)

似乎在PHP 5.3中工作得很好.啊,PHP 5.3中添加了" 现在可以动态访问静态方法 "