ScotlandPHP 2016

ReflectionProperty::__construct

(PHP 5, PHP 7)

ReflectionProperty::__constructConstruir un objeto ReflectionProperty

Descripción

public ReflectionProperty::__construct ( mixed $class , string $name )

Advertencia

Esta función no está documentada actualmente, solamente se encuentra disponible la lista de parámetros.

Parámetros

class

El nombre de la clase que contiene la propiedad.

name

El nombre de la propiedad a reflexionar.

Valores devueltos

No devuelve ningún valor.

Errores/Excepciones

Si se tratara de consultar o modificar propiedades privadas o protegidas de la clase, se lanzará una excepción.

Ejemplos

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($obj10);
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)

Ver también

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top