PHP 5.5:访问存储在对象中的动态类的静态类成员

我们假设以下内容:

class a {
  public static $foo = 'bar';
}
class b {
  public $classname = 'a';
}
$b = new b();

以某种方式(花括号等)可以直接访问$foo而不生成“unexpected ::(T_PAAMAYIM_NEKUDOTAYIM)”:

$b->classname::$foo //should result in "bar" not in an "unexpected :: (T_PAAMAYIM_NEKUDOTAYIM)"

我知道并使用以下解决方法:

$c = $b->classname;
$c::$foo;

但我想知道是否存在另一种直接访问$foo的好方法.

最佳答案 你可以像使用变量变量一样使用as

class a {
  public static $foo = 'bar';

  public function getStatic(){
      return self::$foo;
  }
}
class b {
  public $classname = 'a';
}
$b = new b();
$a = new a();
echo ${$b->classname}->getStatic();//bar
点赞