(PHP 5, PHP 7)
ReflectionProperty::__construct — Конструктор класса ReflectionProperty
К настоящему времени эта функция еще не была документирована; для ознакомления доступен только список аргументов.
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($obj, 10);
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)