我打了一個奇怪的問題,今天,甚至爲PHP工程師,我在這難倒訪問類常量:無法從一個實例使用::範圍操作
這似乎可以從一個對象訪問類常量實例如:
class a {
const abc = 1;
}
$a = new a();
var_dump($a->abc);
這將輸出空而不是預期的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);
最後這個例子更象是我在做什麼,體驗...
是常數自動'static'? – Matt 2012-08-15 20:36:42
在php中,常量綁定到類定義上,它們根據定義是靜態的,不能使用 - >運算符來訪問。不幸的是,這恰好是野獸的本質。 – raidenace 2012-08-15 20:41:48
您可以使用'self ::'而不是'$ this->'來訪問類常量。在你的情況下,你可以使''a = new A(); var_dump(a :: abc);'' – lev09 2017-07-19 11:28:25