gpt4 book ai didi

php - ReflectionClass::getProperties() 是否也获取父级的属性?

转载 作者:可可西里 更新时间:2023-11-01 13:35:53 25 4
gpt4 key购买 nike

我正在尝试通过反射访问/更改类的父类的属性。

如果我在子级上运行 ReflectionClass::getProperties(),它是否也会返回父级也具有的任何属性?

如果没有,有没有办法使用反射访问父属性?

最佳答案

我完成了这个快速测试。当您获取子类的属性时,看起来父类的私有(private)属性被隐藏了。但是,如果您调用 getParentClass() 然后调用 getProperties(),您将拥有缺少的一组私有(private)属性。

<?php
class Ford {
private $model;
protected $foo;
public $bar;
}

class Car extends Ford {
private $year;
}

$class = new ReflectionClass('Car');
var_dump($class->getProperties()); // First chunk of output
var_dump($class->getParentClass()->getProperties()); // Second chunk

输出(注意私有(private)属性 Ford::model 丢失):

array(3) {
[0]=>
&object(ReflectionProperty)#2 (2) {
["name"]=>
string(4) "year"
["class"]=>
string(3) "Car"
}
[1]=>
&object(ReflectionProperty)#3 (2) {
["name"]=>
string(3) "foo"
["class"]=>
string(4) "Ford"
}
[2]=>
&object(ReflectionProperty)#4 (2) {
["name"]=>
string(3) "bar"
["class"]=>
string(4) "Ford"
}
}

第二 block (包含 Ford 类的所有属性):

array(3) {
[0]=>
&object(ReflectionProperty)#3 (2) {
["name"]=>
string(5) "model"
["class"]=>
string(4) "Ford"
}
[1]=>
&object(ReflectionProperty)#2 (2) {
["name"]=>
string(3) "foo"
["class"]=>
string(4) "Ford"
}
[2]=>
&object(ReflectionProperty)#5 (2) {
["name"]=>
string(3) "bar"
["class"]=>
string(4) "Ford"
}
}

关于php - ReflectionClass::getProperties() 是否也获取父级的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9913680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com