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


(PHP 5)

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

Описание

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

Внимание

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

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

class

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

name

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

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

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

Ошибки

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

Примеры

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

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

// Создание нового объекта класса ReflectionProperty
$prop = new ReflectionProperty('String''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)
);

// создание строки
$obj= new String();

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

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

// Dump object
var_dump($obj);
?>

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

 ===> общедоступное свойство 'length' (которое объявлено во время компиляции)      имеющее модификаторы array (   0 => 'public', ) ---> Значение: int(5) ---> Установка значения 10, новое значение: int(10) object(String)#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) 

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