呼び出されたクラスで保護された変数を読み取ろうとしています。保護された $test と新しい ReflectionClass の問題はどこにありますか?
<?PHP
class foo
{
protected $test = ['foo' => 'foo'];
public function __construct()
{
$class = get_called_class();
do
{
foreach((new \ReflectionClass($class))->getDefaultProperties() as $property => $value)
var_dump([$class.'::'.$property => $value]);
}
while($class = get_parent_class($class));
}
}
class baz extends foo
{
protected $test = ['baz' => 'baz'];
}
new baz;
実際:
["baz::test"]=>
["baz"]=> "baz"
["foo::test"]=>
["baz"]=> "baz"
期待される:
["baz::test"]=>
["baz"]=> "baz"
["foo::test"]=>
["foo"]=> "foo"
敬具。