ReflectionClass::getDefaultProperties
(PHP 5)
ReflectionClass::getDefaultProperties — Возвращает свойства по умолчанию
Описание
Возвращает свойства класса по умолчанию (включая наследованные свойства).
Список параметров
У этой функции нет параметров.
Возвращаемые значения
Ассоциативный массив (array) свойств по умолчанию, ключами которого являются
имена свойств, а значениями -- соответствующие значения по умолчанию или же NULL
,
если этому свойству не было задано значение по умолчанию. Функция
не различает static (статические) и non static (не статические) свойства, а также не предоставляет
информацию о модификаторах видимости при выводе.
Примеры
Пример #1 Пример использования ReflectionClass::getDefaultProperties()
<?php
class Bar {
protected $inheritedProperty = 'наследованное свойство по умолчанию';
}
class Foo extends Bar {
public $property = 'свойство по умолчанию';
private $privateProperty = 'закрытое свойство по умолчанию';
public static $staticProperty = 'статическое свойство';
public $defaultlessProperty;
}
$reflectionClass = new ReflectionClass('Foo');
var_dump($reflectionClass->getDefaultProperties());
?>
Результат выполнения данного примера:
array(5) { ["staticProperty"]=> string(14) "статическое свойство" ["property"]=> string(15) "свойство по умолчанию" ["privateProperty"]=> string(22) "закрытое свойство по умолчанию" ["defaultlessProperty"]=> NULL ["inheritedProperty"]=> string(16) "наследованное свойство по умолчанию" }
Смотрите также
- ReflectionClass::getProperties() - Возвращает свойства
- ReflectionClass::getStaticProperties() - Возвращает static свойства
- ReflectionClass::getProperty() - Возвращает экземпляр ReflectionProperty для свойства класса
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Расширения, относящиеся к переменным и типам
- Reflection
- Функция ReflectionClass::__construct() - Создаёт объект класса ReflectionClass
- Функция ReflectionClass::export() - Экспортирует класс
- Функция ReflectionClass::getConstant() - Возвращает определенную константу
- Функция ReflectionClass::getConstants() - Возвращает константы
- Функция ReflectionClass::getConstructor() - Возвращает конструктор класса
- Функция ReflectionClass::getDefaultProperties() - Возвращает свойства по умолчанию
- Функция ReflectionClass::getDocComment() - Возвращает doc-блоки комментариев
- Функция ReflectionClass::getEndLine() - Возвращает номер последней строки
- Функция ReflectionClass::getExtension() - Возвращает объект класса ReflectionExtension для расширения, определенного в классе
- Функция ReflectionClass::getExtensionName() - Возвращает имя расширения, определенного в классе
- Функция ReflectionClass::getFileName() - Возвращает имя файла, в котором объявлен класс
- Функция ReflectionClass::getInterfaceNames() - Возвращает имена интерфейсов
- Функция ReflectionClass::getInterfaces() - Возвращает интерфейсы
- Функция ReflectionClass::getMethod() - Возвращает экземпляр ReflectionMethod для метода класса
- Функция ReflectionClass::getMethods() - Возвращает список методов в виде массива
- Функция ReflectionClass::getModifiers() - Возвращает информацию о модификаторах класса
- Функция ReflectionClass::getName() - Возвращает имя класса
- Функция ReflectionClass::getNamespaceName() - Возвращает название пространства имён
- Функция ReflectionClass::getParentClass() - Возвращает родительский класс
- Функция ReflectionClass::getProperties() - Возвращает свойства
- Функция ReflectionClass::getProperty() - Возвращает экземпляр ReflectionProperty для свойства класса
- Функция ReflectionClass::getShortName() - Возвращает короткое имя
- Функция ReflectionClass::getStartLine() - Возвращает номер начальной строки
- Функция ReflectionClass::getStaticProperties() - Возвращает static свойства
- Функция ReflectionClass::getStaticPropertyValue() - Возвращает значение static свойства
- Функция ReflectionClass::getTraitAliases() - Возвращает массив trait-псевдонимов
- Функция ReflectionClass::getTraitNames() - Возвращает массив trait-имён, задействованных в этом классе
- Функция ReflectionClass::getTraits() - Возвращает массив traits, задействованных в этом классе
- Функция ReflectionClass::hasConstant() - Проверяет, задана ли константа
- Функция ReflectionClass::hasMethod() - Проверяет, задан ли метод
- Функция ReflectionClass::hasProperty() - Проверяет, задано ли свойство
- Функция ReflectionClass::implementsInterface() - Проверяет, реализуется ли интерфейс
- Функция ReflectionClass::inNamespace() - Проверяет, определён ли класс в пространстве имён
- Функция ReflectionClass::isAbstract() - Проверяет, является ли класс абстрактным
- ReflectionClass::isAnonymous
- Функция ReflectionClass::isCloneable() - Проверяет, можно ли клонировать этот класс
- Функция ReflectionClass::isFinal() - Проверяет, является ли класс окончательным (final)
- Функция ReflectionClass::isInstance() - Проверяет, принадлежит ли объект классу
- Функция ReflectionClass::isInstantiable() - Проверяет, можно ли создать экземпляр класса
- Функция ReflectionClass::isInterface() - Проверяет, является ли класс интерфейсом
- Функция ReflectionClass::isInternal() - Проверяет, является ли класс встроенным в расширение или в ядро
- Функция ReflectionClass::isIterateable() - Проверяет, является ли класс итерируемым
- Функция ReflectionClass::isSubclassOf() - Проверяет, является ли класс подклассом
- Функция ReflectionClass::isTrait() - Проверяет, является ли класс trait
- Функция ReflectionClass::isUserDefined() - Проверяет, является ли класс пользовательским
- Функция ReflectionClass::newInstance() - Создаёт экземпляр класса с переданными аргументами
- Функция ReflectionClass::newInstanceArgs() - Создаёт экземпляр класса с переданными параметрами
- Функция ReflectionClass::newInstanceWithoutConstructor() - Создаёт новый экземпляр класса без вызова конструктора
- Функция ReflectionClass::setStaticPropertyValue() - Устанавливает значение static-свойства
- Функция ReflectionClass::__toString() - Возвращает строковое представление объекта класса ReflectionClass
Коментарии
This will return all properties in a class and any parent classes. The array will have keys set to the property names and empty values.
Worth noting that it will not return private parameters of parent class...
so it works exactly as get_class_vars or get_object_vars
runaurufu is not quite right, get_class_vars() does not return protected params, while this one does.
Thus it's extremely useful when having an abstract parent class and protected properties overriding in children.
For example, I use a class factory and one of the children has some static test methods that still need to output a paramether name, like $this->name, etc. With this example code, one can use static::getNotStaticProperty('name'), but not get_class_vars('name').
Try it:
trait static_reflector {
/*
* a purely static function that returns default properties of the non-static instance of the same class
*/
static protected function getNonStaticProperty($key) {
$me = get_class();
$reflectionClass = new \ReflectionClass($me);
$properties_list = $reflectionClass->getDefaultProperties();
if (isset($properties_list[$key]))
return $var_name = $properties_list[$key];
else throw new RuntimeException("BUG: Unable to reflect non-static property '{$key}' from default properties of class {$me}");
}
}
class a {
use \static_reflector;
protected $key_a = 'test ok';
public static function test() {
echo static::getNonStaticProperty('key_a')."\n";
try {
print static::getNonStaticProperty('key_b');
echo "FAIL No exception thrown";
} catch (RuntimeException $e) {
echo "OK ".$e->getMessage();
}
}
}
echo get_class_vars('a')['key_a'];
a::test();
this will return:
Notice: Undefined index: key_a in ...
test ok
OK BUG: Unable to reflect non-static property 'key_b' from default properties of class a
ps: Yes, this is copied from a unit test.