文字

ReflectionProperty::getValue

(PHP 5)

ReflectionProperty::getValueGets value

说明

public mixed ReflectionProperty::getValue ([ object $object ] )

Gets 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::getDefaultProperties() instead.

返回值

The current value of the property.

错误/异常

Throws a ReflectionException if the property is inaccessible. You can make a protected or private property accessible using ReflectionProperty::setAccessible() .

范例

Example #1 ReflectionProperty::getValue() example

<?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 ));
?>

以上例程会输出:

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

参见

  • ReflectionProperty::setValue() - Set property value
  • ReflectionProperty::setAccessible() - Set property accessibility
  • ReflectionClass::getDefaultProperties() - 获取默认属性
  • ReflectionClass::getStaticPropertyValue() - 获取静态(static)属性的值

用户评论:

[#1] sergiy dot sokolenko at gmail dot com [2010-06-28 15:48:31]

To allow protected and private properties to be accessed, you should use
ReflectionProperty::setAccessible(bool $accessible):

<?php

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"
?>

上一篇: 下一篇: