Класс рефлексии PHP. Как получить значения свойств?

Я использую класс отражения в 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());