(PHP 5, PHP 7, PHP 8)
ReflectionProperty::guetValue — Guets value
Guets the property's value.
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.
The current value of the property.
| 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.
|
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"
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"?>