我今天遇到了一个奇怪的问题,即使作为一名 PHP 工程师,我也对此感到困惑:
似乎您可以从对象实例访问类常量,例如:
class a {
const abc = 1;
}
$a = new a();
var_dump($a->abc);
这将输出 null 而不是预期的 1。我能够执行以下操作:
class a {
const abc = 1;
}
$a = new a();
var_dump(a::abc);
但是在一个并不真正知道父对象到底是谁的子对象的上下文中,我发现这样做非常烦人:
class a {
const abc = 1;
}
$a = new a();
$c = get_class($a);
var_dump($c::abc);
是我还是这完全愚蠢,如果不是,请告诉我为什么它会这样工作。
编辑
另一种方法,但它并不是真的更好:
class a {
const abc = 1;
}
class b {
public function getA(){
return new a();
}
}
$b = new b();
$c = $b->getA();
var_dump($c::abc);
最后一个例子更像我正在做和经历的......