例子:
class LOL{
const
FOO = 1;
}
$x = new LOL;
$arr = array('x' => $x);
echo $x::FOO; // works
echo $arr['x']::FOO; // works too
但是如果我让我的类实例成为一个属性,我就不能再访问这个常量了:
class WWW{
protected $lol;
public function __construct($lol){
$this->lol= $lol;
}
public function doSMth(){
echo $this->lol::FOO; // fail. parse error.. wtf
}
}
$w = new WWW;
$w->doSMth();
:(
我知道我可以做到echo LOL::FOO
,但是如果类名未知怎么办?从那个位置我只能访问那个对象/属性,我真的不希望那个 WWW 类“知道”其他类及其名称。它应该只适用于给定的对象