PHP Reflection Class. Как получить значения свойств? - PullRequest
6 голосов
/ 14 февраля 2011

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

С наилучшими пожеланиями,

Ответы [ 2 ]

11 голосов
/ 14 февраля 2011

Как насчет

В вашем случае:

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 в массив.

1 голос
/ 30 марта 2016

Другой метод - использовать метод 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...