(PHP 5, PHP 7)
ReflectionProperty::__construct — Construir un objeto ReflectionProperty
Esta función no está documentada actualmente, solamente se encuentra disponible la lista de parámetros.
class
El nombre de la clase que contiene la propiedad.
name
El nombre de la propiedad a reflexionar.
No devuelve ningún valor.
Si se tratara de consultar o modificar propiedades privadas o protegidas de la clase, se lanzará una excepción.
Ejemplo #1 Ejemplo de ReflectionProperty::__construct()
<?php
class Str
{
public $longitud = 5;
}
// Crear una instancia de la clase ReflectionProperty
$prop = new ReflectionProperty('Str', 'longitud');
// Mostrar información básica
printf(
"===> La propiedad %s%s%s%s '%s' (que está %s)\n" .
" con los modificadores %s\n",
$prop->isPublic() ? ' pública' : '',
$prop->isPrivate() ? ' privada' : '',
$prop->isProtected() ? ' protegida' : '',
$prop->isStatic() ? ' estática' : '',
$prop->getName(),
$prop->isDefault() ? 'declarada en tiempo de compilación' : 'creada en tiempo de ejecución',
var_export(Reflection::getModifierNames($prop->getModifiers()), 1)
);
// Crear una instancia de Str
$obj= new Texto();
// Obtener el valor actual
printf("---> Valor: ");
var_dump($prop->getValue($obj));
// Cambiar valor
$prop->setValue($obj, 10);
printf("---> Al establecer como valor 10, su nuevo valor es: ");
var_dump($prop->getValue($obj));
// Volcar objeto
var_dump($obj);
?>
El resultado del ejemplo sería algo similar a:
===> La propiedad pública 'longitud' (que está declarada en tiempo de compilación) con los modificadores array ( 0 => 'public', ) ---> Valor: int(5) ---> Al establecer como valor 10, su nuevo valor es: int(10) object(Str)#2 (1) { ["longitud"]=> int(10) }
Ejemplo #2 Obtener el valor de propiedades privadas y protegidas con ReflectionProperty
<?php
class Foo {
public $x = 1;
protected $y = 2;
private $z = 3;
}
$obj = new Foo;
$prop = new ReflectionProperty('Foo', 'y');
$prop->setAccessible(true); /* Desde PHP 5.3.0 */
var_dump($prop->getValue($obj)); // int(2)
$prop = new ReflectionProperty('Foo', 'z');
$prop->setAccessible(true); /* Desde PHP 5.3.0 */
var_dump($prop->getValue($obj)); // int(2)
?>
El resultado del ejemplo sería algo similar a:
int(2) int(3)