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

    (PHP 5, PHP 7)

    Construct a ReflectionProperty object

    说明

    publicReflectionProperty::__construct(mixed $class, string $name)
    Warning

    本函数还未编写文档,仅有参数列表。

    参数

    $class

    The class name, that contains the property.

    $name

    The name of the property being reflected.

    返回值

    没有返回值。

    错误/异常

    Trying to get or set private or protected class property's values will result in an exception being thrown.

    范例

    Example #1ReflectionProperty::__construct()example

    <?php
    class Str
    {
        public $length  = 5;
    }
    // Create an instance of the ReflectionProperty class
    $prop = new ReflectionProperty('Str', 'length');
    // Print out basic information
    printf(
        "===> The%s%s%s%s property '%s' (which was %s)\n" .
        "     having the modifiers %s\n",
            $prop->isPublic() ? ' public' : '',
            $prop->isPrivate() ? ' private' : '',
            $prop->isProtected() ? ' protected' : '',
            $prop->isStatic() ? ' static' : '',
            $prop->getName(),
            $prop->isDefault() ? 'declared at compile-time' : 'created at run-time',
            var_export(Reflection::getModifierNames($prop->getModifiers()), 1)
    );
    // Create an instance of Str
    $obj= new Str();
    // Get current value
    printf("---> Value is: ");
    var_dump($prop->getValue($obj));
    // Change value
    $prop->setValue($obj, 10);
    printf("---> Setting value to 10, new value is: ");
    var_dump($prop->getValue($obj));
    // Dump object
    var_dump($obj);
    ?>
    

    以上例程的输出类似于:

    ===> The public property 'length' (which was declared at compile-time)
         having the modifiers array (
      0 => 'public',
    )
    ---> Value is: int(5)
    ---> Setting value to 10, new value is: int(10)
    object(Str)#2 (1) {
      ["length"]=>
      int(10)
    }
    

    Getting value from private and protected properties usingReflectionPropertyclass

    <?php
    class Foo {
        public $x = 1;
        protected $y = 2;
        private $z = 3;
    }
    $obj = new Foo;
    $prop = new ReflectionProperty('Foo', 'y');
    $prop->setAccessible(true); /* As of PHP 5.3.0 */
    var_dump($prop->getValue($obj)); // int(2)
    $prop = new ReflectionProperty('Foo', 'z');
    $prop->setAccessible(true); /* As of PHP 5.3.0 */
    var_dump($prop->getValue($obj)); // int(2)
    ?>
    

    以上例程的输出类似于:

    int(2)
    int(3)
    

    参见

    • ReflectionProperty::getName() Gets property name
    • Constructors
    At example #2: the comment // int(2) is stated while the value for the private property is actually 3. (private $z = 3;)
    var_dump($prop->getValue($obj)); // This should be int(3)