我们假设以下内容:
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