Я использую класс отражения в PHP, но я не знаю, как получить значения свойств в экземпляре отражения. Возможно?
Код:
<?php class teste { public $name; public $age; } $t = new teste(); $t->name = 'John'; $t->age = '23'; $api = new ReflectionClass($t); foreach($api->getProperties() as $propertie) { print $propertie->getName() . "\n"; } ?>
Как я могу получить значения свойства в цикле foreach?
С наилучшими пожеланиями,
Как насчет
ReflectionProperty::getValue
– возвращает значение свойства. В твоем случае:
foreach ($api->getProperties() as $propertie) { print $propertie->getName() . "\n"; print $propertie->getValue($t); }
На стороне, так как ваш объект имеет только публичные члены, вы можете точно так же перебрать его прямо
foreach ($t as $propertie => $value) { print $propertie . "\n"; print $value; }
или get_object_vars
их с помощью get_object_vars
в массив.
Другой метод – использовать метод getDefaultProperties () , если вы не хотите создавать экземпляр этого класса, например.
$api->getDefaultProperties();
Вот ваш полный пример, сведенный к тому, что вы ищете …
class teste { public $name; public $age; } $api = new ReflectionClass('teste'); var_dump($api->getDefaultProperties());
Примечание. Вы также можете использовать пространства имен внутри этого ReflectionClass. например,
$class = new ReflectionClass('Some\Namespaced\Class'); var_dump($class->getDefaultProperties());