Могу ли я получить CONST для класса PHP? - PullRequest
125 голосов
/ 05 июня 2009

У меня есть несколько определений CONST для некоторых классов, и я хочу получить их список. Например:

class Profile {
    const LABEL_FIRST_NAME = "First Name";
    const LABEL_LAST_NAME = "Last Name";
    const LABEL_COMPANY_NAME = "Company";
}

Есть ли способ получить список CONST, определенных в классе Profile? Насколько я могу судить, ближайший вариант (get_defined_constants()) не сработает.

Что мне действительно нужно, так это список имен констант - что-то вроде этого:

array('LABEL_FIRST_NAME',
    'LABEL_LAST_NAME',
    'LABEL_COMPANY_NAME')

Или:

array('Profile::LABEL_FIRST_NAME', 
    'Profile::LABEL_LAST_NAME',
    'Profile::LABEL_COMPANY_NAME')

Или даже:

array('Profile::LABEL_FIRST_NAME'=>'First Name', 
    'Profile::LABEL_LAST_NAME'=>'Last Name',
    'Profile::LABEL_COMPANY_NAME'=>'Company')

Ответы [ 12 ]

3 голосов
/ 06 октября 2010

Почему бы не поместить их в переменную класса как массив для начала? Облегчает зацикливание.

private $_data = array("production"=>0 ...);
1 голос
/ 04 ноября 2018
Class Qwerty 
{
    const __COOKIE_LANG_NAME__ = "zxc";
    const __UPDATE_COOKIE__ = 30000;

    // [1]
    public function getConstants_(){

        return ['__COOKIE_LANG_NAME__' => self::__COOKIE_LANG_NAME__, 
                '__UPDATE_COOKIE__' => self::__UPDATE_COOKIE__]; 
    }    

    // [2]
    static function getConstantsStatic_(){

        return ['__COOKIE_LANG_NAME__' => self::__COOKIE_LANG_NAME__, 
                '__UPDATE_COOKIE__' => self::__UPDATE_COOKIE__]; 
    } 
}

// [1]
$objC = new Qwerty();
var_dump($objC->getConstants_());

// [2]
var_dump(Qwerty::getConstantsStatic_());
...