CakeFest 2024: The Official CakePHP Conference

ReflectionProperty::getValue

(PHP 5, PHP 7, PHP 8)

ReflectionProperty::getValueObtiene el valor

Descripción

public ReflectionProperty::getValue(object $object = ?): mixed

Obtiene el valor de la propiedad.

Parámetros

object

Si la propiedad no fuera estática, se deberá adjuntar un objeto del que obtener la propiedad. Si se deseara obtener las propiedades predeterminadas sin proporcionar ningún objeto, utilice en su lugar ReflectionClass::getDefaultProperties().

Valores devueltos

Valor que contiene la propiedad.

Errores/Excepciones

Lanza ReflectionException si la propiedad no fuera accesible. Una propiedad protegida o privada puede hacerse accesible mediante ReflectionProperty::setAccessible().

Ejemplos

Ejemplo #1 Ejemplo de 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));
?>

El resultado del ejemplo sería:

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

Ver también

add a note

User Contributed Notes 1 note

up
9
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