ReflectionClass::getConstants
(PHP 5)
ReflectionClass::getConstants — Gets constants
Description
public array ReflectionClass::getConstants
( void
)
Gets defined constants from a class.
Warning
This function is currently not documented; only its argument list is available.
Parameters
This function has no parameters.
Return Values
An array of constants. Constant name in key, constant value in value.
- 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
Коментарии
I was trying to determine how to get a var_dump of constants that are within an interface. Thats right, not using any classes but the interface itself.
Along my travels I found it quite interesting that the ReflectionClass along with a direct call to the interface will also dump its constants. Perfect!!!!
This was using PHP 5.3.1 and my example as below:-
1st File:
constants.php
<?php
<?php>
interface MyConstants
{
// --------------------------
// Programmatic Level
// --------------------------
const DEBUG_MODE_ACTIVE = FALSE;
const PHP_VERSION_REQUIREMENT = "5.1.2";
}
?>
=======
Second file:
=======
test.php
<?php>
include_once ("constants.php");
$oClass = new ReflectionClass ('MyConstants');
$array = $oClass->getConstants ();
var_dump ($array);
unset ($oClass);
?>
what you would get from the command line:-
?:\???\htdocs\????>php test.php
array(2) {
["DEBUG_MODE_ACTIVE"]=> bool(false)
["PHP_VERSION_REQUIREMENT"]=> string(5) "5.1.2"
But as you can see this can work quite well to your advantage in many ways so I truely hope this helps someone else with a similar headache in the future to come!
Enjoy!
I use a functions to do somthing base on the class constant name as below. This example maybe helpful for everybody.
<?php
public function renderData($question_type = NULL, $data = array()) {
$types = array();
$qt = new ReflectionClass(questionType);
$types = $qt->getConstants();
if ($type = array_search($question_type, $types)){
//.....Do somthing
}
}
?>
If you want to return the constants defined inside a class then you can also define an internal method as follows:
<?php
class myClass {
const NONE = 0;
const REQUEST = 100;
const AUTH = 101;
// others...
static function getConstants() {
$oClass = new ReflectionClass(__CLASS__);
return $oClass->getConstants();
}
}
?>
You can pass $this as class for the ReflectionClass. __CLASS__ won't help if you extend the original class, because it is a magic constant based on the file itself.
<?php
class Example {
const TYPE_A = 1;
const TYPE_B = 'hello';
public function getConstants()
{
$reflectionClass = new ReflectionClass($this);
return $reflectionClass->getConstants();
}
}
$example = new Example();
var_dump($example->getConstants());
// Result:
array ( size = 2)
'TYPE_A' => int 1
'TYPE_B' => (string) 'hello'
If you want to define a static getConstants() function which works with inheritance you can do the following:
<?php
abstract class AbstractClass
{
const TEST = "test";
public static function getConstants()
{
// "static::class" here does the magic
$reflectionClass = new ReflectionClass(static::class);
return $reflectionClass->getConstants();
}
}
class ChildClass extends AbstractClass
{
const TYPE_A = 1;
const TYPE_B = 'hello';
}
$example = new ChildClass();
var_dump($example->getConstants());
// Result:
array(3) {
'TYPE_A' => int(1)
'TYPE_B' => string(5) "hello"
'TEST' => string(4) "test"
}
?>
Get the latest constants declared.
abstract class AbstractEnum
{
/**
* Возвращает все константы класса || Return all constants
*
* @return array
*/
static function getConstants()
{
$rc = new \ReflectionClass(get_called_class());
return $rc->getConstants();
}
/**
* Возвращает массив констант определенные в вызываемом классе || Return last constants
*
* @return array
*/
static function lastConstants()
{
$parentConstants = static::getParentConstants();
$allConstants = static::getConstants();
return array_diff($allConstants, $parentConstants);
}
/**
* Возвращает все константы родительских классов || Return parent constants
*
* @return array
*/
static function getParentConstants()
{
$rc = new \ReflectionClass(get_parent_class(static::class));
$consts = $rc->getConstants();
return $consts;
}
}
======
class Roles extends AbstractEnum
{
const ROOT = 'root';
const ADMIN = 'admin';
const USER = 'user';
}
// Output:
All: root, admin, user
Last: root, admin, user
class NewRoles extends Roles
{
const CLIENT = 'client';
const MODERATOR = 'moderator';
const SUPERMODERATOR = 'super'.self::USER;
}
// Output:
All: client, moderator, superuser, root, admin, user
Last: client, moderator, superuser
class AdditionalRoles extends Roles
{
const VIEWER = 'viewer';
const CHECKER = 'checker';
const ROOT = 'rooter';
}
All: viewer, checker, rooter, client, moderator, superuser, admin, user
Last: viewer, checker, rooter