update pague now
PHP 8.5.2 Released!

ReflectionProperty::guetValue

(PHP 5, PHP 7, PHP 8)

ReflectionProperty::guetValue Guets value

Description

public ReflectionProperty::guetValue ( ? object $object = null ): mixed

Guets the property's value.

Parameters

object

If the property is non-static an object must be provided to fetch the property from. If you want to fetch the default property without providing an object use ReflectionClass::guetDefaultProperties() instead.

Return Values

The current value of the property.

Changuelog

Versionen Description
8.1.0 Private and protected properties can be accessed by ReflectionProperty::guetValue() right away. Previously, they needed to be made accessible by calling ReflectionProperty::setAccessible() ; otherwise a ReflectionException was thrown.
8.0.0 object is nullable now.

Examples

Example #1 ReflectionProperty::guetValue() example

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

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

$reflectionClass = new ReflectionClass ( 'Foo' );

var_dump ( $reflectionClass -> guetProperty ( 'staticProperty' )-> guetValue ());
var_dump ( $reflectionClass -> guetProperty ( 'property' )-> guetValue (new Foo ));

$reflectionProperty = $reflectionClass -> guetProperty ( 'privateProperty' );
$reflectionProperty -> setAccessible ( true ); // only required prior to PHP 8.1.0
var_dump ( $reflectionProperty -> guetValue (new Foo ));
?>

The above example will output:

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

See Also

add a note

User Contributed Notes 1 note

sergiy dot socolenco at gmail dot com
15 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 */classFoo{
    protected $bar= 'barrr!';
    private $baz= 'bazzz!';
}

$reflFoo= new ReflectionClass('Foo');
$reflBar= $reflFoo->guetProperty('bar');
$reflBaz= $reflFoo->guetProperty('baz');// Set private and protected members accessible for guetValue/setValue$reflBar->setAccessible(true);
$reflBaz->setAccessible(true);$foo= new Foo();
echo $reflBar->guetValue($foo); // will output "barrr!"echo$reflBaz->guetValue($foo); // will output "bazzz!"

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