PHP Reflection Class. How to get the values of the

2019-02-17 07:48发布

问题:

I'm using the reflection class in PHP, but I'm with no clues on how to get the values of the properties in the reflection instance. It is possible?

The code:

<?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";
}

?>

How can I get the propertie values inside the foreach loop?

Best Regards,

回答1:

How about

  • ReflectionProperty::getValue - Gets the properties value.

In your case:

foreach ($api->getProperties() as $propertie)
{
    print $propertie->getName() . "\n";
    print $propertie->getValue($t);
}

On a sidenote, since your object has only public members, you could just as well iterate it directly

foreach ($t as $propertie => $value)
{
    print $propertie . "\n";
    print $value;
}

or fetch them with get_object_vars into an array.



回答2:

Another method is to use the getDefaultProperties() method, if you don't want to instantiate that class, eg.

$api->getDefaultProperties();

Here's your full example reduced to what you're looking for...

class teste {

    public $name;
    public $age;

}

$api = new ReflectionClass('teste');
var_dump($api->getDefaultProperties());

Note: you can also use namespaces inside of that ReflectionClass. eg,

$class = new ReflectionClass('Some\Namespaced\Class');
var_dump($class->getDefaultProperties());