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

    (PHP 5, PHP 7)

    Set property value

    说明

    publicReflectionProperty::setValue(object $object, mixed $value) : void
    publicReflectionProperty::setValue(mixed $value) : void

    Sets (changes) the property's value.

    参数

    $object

    If the property is non-static an object must be provided to change the property on. If the property is static this parameter is left out and only$valueneeds to be provided.

    $value

    The new value.

    返回值

    没有返回值。

    错误/异常

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

    范例

    Example #1ReflectionProperty::setValue()example

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

    以上例程会输出:

    string(3) "foo"
    string(3) "bar"
    string(6) "foobar"
    

    参见

    • ReflectionProperty::getValue() Gets value
    • ReflectionProperty::setAccessible() Set property accessibility
    • ReflectionClass::setStaticPropertyValue() 设置静态属性的值
    You can use ReflectionProperty::setValue to set the value on static properties as well as regular instance properties. Simply pass null in place of the instance:
    <?php
    class Foo {
      protected static $bar = null;
      public static function sayBar() {
        echo self::$bar;
      }
    }
    $r = new ReflectionProperty('Foo', 'bar');
    $r->setAccessible(true);
    $r->setValue(null, 'foo');
    Foo::sayBar(); // "foo"
    ?>