Tôi đã làm bài kiểm tra nhanh này. Có vẻ như các thuộc tính riêng của cha mẹ bị ẩn khi bạn nhận được các thuộc tính của lớp con. Tuy nhiên, nếu bạn gọi getParentClass()
thì getProperties()
bạn sẽ có bộ đạo cụ riêng tư bị thiếu.
<?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
Output (chú ý prop tin Ford::model
là mất tích):
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"
}
}
Second Chunk (chứa tất cả các thuộc tính của lớp 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"
}
}
Nguồn
2012-03-28 19:20:06
Gnarly! Cảm ơn! Tôi tự hỏi nếu bạn có thể làm $ class-> getParentClass() -> getProperty ('model') -> setValue ($ car, 'F-150') – johnnietheblack