0

有这两个类:

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;

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

4

1 回答 1

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

于 2013-03-30T11:14:27.090 回答