ReflectionProperty::__construct

(PHP 5, PHP 7)

ReflectionProperty::__constructКонструктор класса ReflectionProperty

Описание

public ReflectionProperty::__construct ( mixed $class , string $name )

Внимание

К настоящему времени эта функция еще не была документирована; для ознакомления доступен только список аргументов.

Список параметров

class

Имя класса, содержащего свойство.

name

Имя свойства, которое требуется отобразить.

Возвращаемые значения

Эта функция не возвращает значения после выполнения.

Ошибки

Попытка получить или задать значение защищенного или закрытого свойства приведет к выбрасыванию исключения.

Примеры

Пример #1 Пример использования ReflectionProperty::__construct()

<?php
class Str
{
    public 
$length  5;
}

// Создание нового объекта класса ReflectionProperty
$prop = new ReflectionProperty('Str''length');

// Вывод основной информации об объекте
printf(
    
"===> %s%s%s%s свойство '%s' (которое %s)\n" .
    
"     имеющее модификаторы %s\n",
        
$prop->isPublic() ? ' общедоступное' '',
        
$prop->isPrivate() ? ' закрытое' '',
        
$prop->isProtected() ? ' защищенное' '',
        
$prop->isStatic() ? ' статическое' '',
        
$prop->getName(),
        
$prop->isDefault() ? 'объявлено во время компиляции' 'создано во время выполнения',
        
var_export(Reflection::getModifierNames($prop->getModifiers()), 1)
);

// создание экземпляра класса Str
$obj= new Str();

// получение текущего значения
printf("---> Значение: ");
var_dump($prop->getValue($obj));

// Изменение значения
$prop->setValue($obj10);
printf("---> Установка значения 10, новое значение: ");
var_dump($prop->getValue($obj));

// Сбросить объект
var_dump($obj);
?>

Результатом выполнения данного примера будет что-то подобное:

===> общедоступное свойство 'length' (которое объявлено во время компиляции)
     имеющее модификаторы array (
  0 => 'public',
)
---> Значение: int(5)
---> Установка значения 10, новое значение: int(10)
object(Str)#2 (1) {
  ["length"]=>
  int(10)
}

Пример #2 Получение значений защищенных и закрытых свойств, используя класс ReflectionProperty

<?php

class Foo {
    public 
$x 1;
    protected 
$y 2;
    private 
$z 3;
}

$obj = new Foo;

$prop = new ReflectionProperty('Foo''y');
$prop->setAccessible(true); /* Начиная с PHP 5.3.0 */
var_dump($prop->getValue($obj)); // int(2)

$prop = new ReflectionProperty('Foo''z');
$prop->setAccessible(true); /* Начиная с PHP 5.3.0 */
var_dump($prop->getValue($obj)); // int(2)

?>

Результатом выполнения данного примера будет что-то подобное:

int(2)
int(3)

Смотрите также

add a note add a note

User Contributed Notes 1 note

up
2
geoffsmiths at hotmail dot com
2 years ago
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)
To Top