ReflectionClass::getConstants

(PHP 5, PHP 7, PHP 8)

ReflectionClass::getConstantsObtém constantes

Descrição

public ReflectionClass::getConstants(?int $filter = null): array

Obtém todas as constantes definidas de uma classe, independentemente da sua visibilidade.

Parâmetros

filter

O filtro opcional, para filtrar as visibilidades constantes desejadas. Está configurado usando as constantes ReflectionClassConstant, e o padrão é todas as visibilidades constantes.

Valor Retornado

Um array de constantes, onde as chaves contêm o nome e os valores o valor das constantes.

Registro de Alterações

Versão Descrição
8.0.0 filter foi adicionado.

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 6 notes

up
43
davide dot renzi at gmail dot com
11 years ago
If you want to return the constants defined inside a class then you can also define an internal method as follows:<?phpclass myClass {    const NONE = 0;    const REQUEST = 100;    const AUTH = 101;    // others...    static function getConstants() {        $oClass = new ReflectionClass(__CLASS__);        return $oClass->getConstants();    }}?>
up
15
Sandor Toth
8 years ago
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'
up
13
Panni
6 years ago
If you want to define a static getConstants() function which works with inheritance you can do the following:<?phpabstract 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"}?>
up
1
shgninc at gmail dot com
11 years ago
I use a functions to do somthing base on the class constant name as below. This example maybe helpful for everybody.<?phppublic 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}}?>
up
4
djhob1972 at yahoo dot com dot au
15 years ago
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.phparray(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!
up
0
dmitrochenkooleg at gmail dot com
6 years ago
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
To Top