• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ReflectionProperty::getValue()

    (PHP 5, PHP 7)

    Gets value

    说明

    publicReflectionProperty::getValue([object $object] ): mixed

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

    返回值

    The current value of the property.

    错误/异常

    Throws aReflectionExceptionif the property is inaccessible. You can make a protected or private property accessible usingReflectionProperty::setAccessible().

    范例

    Example #1ReflectionProperty::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)属性的值
    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"
    ?>