ReflectionProperty::getValue

(PHP 5, PHP 7, PHP 8)

ReflectionProperty::getValueПолучает значение

Описание

public ReflectionProperty::getValue(object|null $object = null): mixed

Получает значение свойства.

Список параметров

object

Если свойство не статическое, необходимо передать объект, из которого требуется это свойство получить. Если вам нужно получить свойство по умолчанию, не предоставляя объект, используйте функцию ReflectionClass::getDefaultProperties().

Возвращаемые значения

Текущее значение свойства.

Ошибки

Выбрасывает исключение ReflectionException, если свойство недоступно. Защищённые и закрытые свойства можно сделать доступными функцией ReflectionProperty::setAccessible().

Список изменений

Версия Описание
8.0.0 object теперь допускает значение null.

Примеры

Пример #1 Пример использования ReflectionProperty::getValue()

<?php
class Foo {
    public static 
$staticProperty 'foobar';

    public 
$property 'barfoo';
    protected 
$privateProperty 'foofoo';
}

$reflectionClass = new ReflectionClass('Foo');

var_dump($reflectionClass->getProperty('staticProperty')->getValue());
var_dump($reflectionClass->getProperty('property')->getValue(new Foo));

$reflectionProperty $reflectionClass->getProperty('privateProperty');
$reflectionProperty->setAccessible(true);
var_dump($reflectionProperty->getValue(new Foo));
?>

Результат выполнения данного примера:

string(6) "foobar"
string(6) "barfoo"
string(6) "foofoo"

Смотрите также

add a note add a note

User Contributed Notes 1 note

up
7
sergiy dot sokolenko at gmail dot com
13 years ago
To allow protected and private properties to be accessed, you should use
ReflectionProperty::setAccessible(bool $accessible):

<?php
/** Class Foo with protected and private members */
class Foo {
    protected
$bar = 'barrr!';
    private
$baz = 'bazzz!';
}

$reflFoo = new ReflectionClass('Foo');
$reflBar = $reflFoo->getProperty('bar');
$reflBaz = $reflFoo->getProperty('baz');

// Set private and protected members accessible for getValue/setValue
$reflBar->setAccessible(true);
$reflBaz->setAccessible(true);

$foo = new Foo();
echo
$reflBar->getValue($foo); // will output "barrr!"
echo $reflBaz->getValue($foo); // will output "bazzz!"

// You can also setValue
$reflBar->setValue($foo, "new value");
echo
$reflBar->getValue($foo); // will output "new value"
?>
To Top