PHP ReflectionProperty::setValue 反射函数

  • 定义和用法

    ReflectionProperty::setValue - 设置属性值
  • 版本支持

    PHP4 PHP5 PHP7
    不支持 支持 支持
  • 语法

    ReflectionProperty::setValue( object $object , mixed $value )
    或者:
    ReflectionProperty::setValue( mixed $value )
    ReflectionProperty::setValue() 设置(更改)属性的值。
  • 参数

    参数 必需的 描述
    object 如果该属性是非静态的,则必须提供一个对象以更改该属性。 如果属性是静态的,则忽略此参数,仅需要提供值。
    value 新的属性值。
  • 返回值

    如果属性不可访问,则抛出ReflectionException。 您可以使用ReflectionProperty::setAccessible()使受保护或私有属性可访问。
  • 示例

    class Foo {
        public static $staticProperty;
        
        public $property;
        protected $privateProperty;
    }
    
    $reflectionClass = new ReflectionClass('Foo');
    
    $reflectionClass->getProperty('staticProperty')->setValue('foo');
    var_dump(Foo::$staticProperty);
    
    $foo = new Foo;
    
    $reflectionClass->getProperty('property')->setValue($foo, 'bar');
    var_dump($foo->property);
    
    $reflectionProperty = $reflectionClass->getProperty('privateProperty');
    $reflectionProperty->setAccessible(true);
    $reflectionProperty->setValue($foo, 'foobar');
    var_dump($reflectionProperty->getValue($foo));
    
    尝试一下
  • 相关页面

    ReflectionProperty::getValue() - 获得属性值
    ReflectionProperty::setAccessible() - 设置属性可访问性
    ReflectionClass::setStaticPropertyValue() - 设置静态属性的值