(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));
// Dump object
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); /* 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)