PHP 8.1.0 Released!

ReflectionProperty::__construct

(PHP 5, PHP 7, PHP 8)

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

Описание

public ReflectionProperty::__construct(object|string $class, string $property)

Внимание

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

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

class

Либо строка, содержащая имя отражаемого класса, либо объект.

property

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

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

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

Ошибки

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

Примеры

Пример #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);
var_dump($prop->getValue($obj)); // int(2)

$prop = new ReflectionProperty('Foo''z');
$prop->setAccessible(true);
var_dump($prop->getValue($obj)); // int(2)

?>

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

int(2)
int(3)

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

add a note add a note

User Contributed Notes 1 note

up
4
geoffsmiths at hotmail dot com
4 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