有这2个类:
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;
显然,最后一个片段不起作用。有没有办法让它起作用?
如果您不想使用变量(如您在评论中所说),请三思而后行。变量在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