今日、私は奇妙な問題に遭遇しました.PHPエンジニアとしても、これには困惑しています:
次のようなオブジェクト インスタンスからクラス定数にアクセスできるようです。
class a {
const abc = 1;
}
$a = new a();
var_dump($a->abc);
これにより、予想される 1 ではなく null が出力されます。次のことができました。
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);
この最後の例は、私がやっていることと経験していることのように機能します...