“Mega”动态访问PHP 5.3中的静态方法/属性?

时间:2013-02-02 01:54:30

标签: php syntax static

有这两个班级:

class run {
   public static $where = "there";
}

class there {
   public static $place_name = "A beautiful place..";
}

要获得place_name,我可以这样做:

$place = "there";
echo $place::$place_name;

但我可能想在某些时候做这样的事情......:

echo {$run::$where}::$place_name;

显然,最后一个片段不起作用。 有没有办法让它发挥作用?

1 个答案:

答案 0 :(得分:0)

如果您不想使用变量(正如您在评论中所说),请三思而后行。变量在PHP中非常酷,速度非常快,而且只需要处理其有限解析器所需的粘合剂(据说它可以使PHP非常快)。那么为什么不在这里使用变量呢?输入和快速完成很容易。

如果您不想要变量,并且我们已经发现PHP的语法有限,您至少可以编写一个使用PHP 5.4+的单线程来实现您所需要的:

echo (new ReflectionClass((new ReflectionClass($run))->getStaticPropertyValue('where')))->getStaticPropertyValue('place_name');

然后最终应该看到使用变量更舒服:

echo (unset) $place = $run::$where, $place::$place_name;

演示:http://eval.in/13942