Отражение класса: недостающие свойстваPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Отражение класса: недостающие свойства

Сообщение Anonymous »

Я пытаюсь получить все свойства класса с помощью отражения, но некоторые свойства все еще отсутствуют.
Вот небольшой пример того, что происходит в моем коде:

Код: Выделить всё

Class Test {
public $a = 'a';
protected $b = 'b';
private $c = 'c';
}

$test = new Test();
$test->foo = "bar";
Итак, на данный момент мой объект $test имеет 4 свойства (a, b, c и foo).

Свойство foo считается общедоступным свойством, потому что я могу это сделать.

Код: Выделить всё

echo $test->foo; // Gives: bar
Напротив, b или c считаются частной собственностью

Код: Выделить всё

echo $test->b; // Gives: Cannot access protected property Test::$b
echo $test->c; // Gives: Cannot access private property Test::$c
Я попробовал два решения, чтобы получить все свойства (a, b, c и foo) моего объекта $test
Первое

Код: Выделить всё

var_dump(get_object_vars($test));
дает

Код: Выделить всё

array (size=2)
'a' => string 'a' (length=1)
'foo' => string 'bar' (length=3)
И второе решение

Код: Выделить всё

$reflection = new ReflectionClass($test);
$properties = $reflection->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PRIVATE | ReflectionProperty::IS_PROTECTED);
foreach($properties as $property) {
echo $property->__toString()."
";
}
дает

Код: Выделить всё

Property [ public $a ]
Property [ protected $b ]
Property [ private $c ]
В первом случае отсутствуют частные свойства, а во втором случае отсутствуют свойства «после создания экземпляра».
Что я могу сделать, чтобы получить все свойства? (желательно с помощью Reflection, потому что я также хочу знать, является ли свойство общедоступным, частным,...)

Подробнее здесь: https://stackoverflow.com/questions/229 ... properties
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»