get_defined_constants
(PHP 4 >= 4.1.0, PHP 5)
get_defined_constants — Возвращает ассоциативный массив с именами и значениями всех предопределенных констант
Описание
$categorize
= false
] )Возвращает ассоциативный массив с именами и значениями всех предопределенных констант. Массив также будет включать в себя константы, определенные расширениями, а также созданные функцией define().
Список параметров
-
categorize
-
Использование этого аргумента дает возможность получить многомерный массив, в котором в первом измерении будут содержаться категории констант, а во втором соответствующие имена и значения.
<?php
define("MY_CONSTANT", 1);
print_r(get_defined_constants(true));
?>Результатом выполнения данного примера будет что-то подобное:
Array ( [Core] => Array ( [E_ERROR] => 1 [E_WARNING] => 2 [E_PARSE] => 4 [E_NOTICE] => 8 [E_CORE_ERROR] => 16 [E_CORE_WARNING] => 32 [E_COMPILE_ERROR] => 64 [E_COMPILE_WARNING] => 128 [E_USER_ERROR] => 256 [E_USER_WARNING] => 512 [E_USER_NOTICE] => 1024 [E_ALL] => 2047 [TRUE] => 1 ) [pcre] => Array ( [PREG_PATTERN_ORDER] => 1 [PREG_SET_ORDER] => 2 [PREG_OFFSET_CAPTURE] => 256 [PREG_SPLIT_NO_EMPTY] => 1 [PREG_SPLIT_DELIM_CAPTURE] => 2 [PREG_SPLIT_OFFSET_CAPTURE] => 4 [PREG_GREP_INVERT] => 1 ) [user] => Array ( [MY_CONSTANT] => 1 ) )
Возвращаемые значения
Список изменений
Версия | Описание |
---|---|
5.3.1 | Только для Windows: Константы ядра входят в категорию Core. Раньше категория называлась mhash. |
5.3.0 | Константы ядра входят в категорию Core. Раньше категория называлась internal,а в Windows системах - mhash. |
5.2.11 |
Значение аргумента categorize стало обрабатываться
подобающим образом. Раньше аргумент categorize
воспринимался, как выражение !is_null($categorize),
то есть любое значение отличное от NULL предписывало разделять константы
на категории.
|
5.0.0 |
Добавлен аргумент categorize .
|
Примеры
Пример #1 Пример использвания get_defined_constants()
<?php
print_r(get_defined_constants());
?>
Результатом выполнения данного примера будет что-то подобное:
Array ( [E_ERROR] => 1 [E_WARNING] => 2 [E_PARSE] => 4 [E_NOTICE] => 8 [E_CORE_ERROR] => 16 [E_CORE_WARNING] => 32 [E_COMPILE_ERROR] => 64 [E_COMPILE_WARNING] => 128 [E_USER_ERROR] => 256 [E_USER_WARNING] => 512 [E_USER_NOTICE] => 1024 [E_ALL] => 2047 [TRUE] => 1 )
Смотрите также
- defined() - Проверяет существование указанной именованной константы
- get_loaded_extensions() - Возвращает массив имен всех скомпилированных и загруженных модулей
- get_defined_functions() - Возвращает массив всех определённых функций
- get_defined_vars() - Возвращает массив всех определенных переменных
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Изменение поведения PHP
- PHP Опции и Информация
- assert_options
- assert
- cli_get_process_title
- cli_set_process_title
- dl
- extension_loaded
- gc_collect_cycles
- gc_disable
- gc_enable
- gc_enabled
- gc_mem_caches
- get_cfg_var
- get_current_user
- get_defined_constants
- get_extension_funcs
- get_include_path
- get_included_files
- get_loaded_extensions
- get_magic_quotes_gpc
- get_magic_quotes_runtime
- get_required_files
- get_resources
- getenv
- getlastmod
- getmygid
- getmyinode
- getmypid
- getmyuid
- getopt
- getrusage
- ini_alter
- ini_get_all
- ini_get
- ini_restore
- ini_set
- magic_quotes_runtime
- main
- memory_get_peak_usage
- memory_get_usage
- php_ini_loaded_file
- php_ini_scanned_files
- php_logo_guid
- php_sapi_name
- php_uname
- phpcredits
- phpinfo
- phpversion
- putenv
- restore_include_path
- set_include_path
- set_magic_quotes_runtime
- set_time_limit
- sys_get_temp_dir
- version_compare
- zend_logo_guid
- zend_thread_id
- zend_version
Коментарии
<?php
/**
* Convert constant value into string name.
*
* @param mixed Constant value.
* @return string Constant name.
* @access public
*/
function sch_get_consant($value)
{
$constants = get_defined_constants();
$name = array_search($value, $constants, TRUE);
return $name;
}
?>
If you want to filter through and return only the prefix for your constants (i.e. you have constants with a naming scheme), then you can use this quick little function. It comes in handy for debugging.
<?php
function returnConstants ($prefix) {
foreach (get_defined_constants() as $key=>$value)
if (substr($key,0,strlen($prefix))==$prefix) $dump[$key] = $value;
if(empty($dump)) { return "Error: No Constants found with prefix '".$prefix."'"; }
else { return $dump; }
}
?>
Example:
<?php
define("SITENAME_OPTION_ONE",true);
define("SITENAME_OPTION_TWO",false);
define("SITENAME_URL","foo");
print_r(returnConstants("SITENAME_OPTION"));
?>
Will return:
Array
(
[SITENAME_OPTIONONE] => 1
[SITENAME_OPTIONTWO] =>
)
Add this method to your class definition if you want an array of class constants (get_defined_constants doesn't work with class constants as Peter P said above):
<?php
public function get_class_constants()
{
$reflect = new ReflectionClass(get_class($this));
return $reflect->getConstants());
}
?>
You could also override stdObject with it so that all your classes have this method
If you want to access directly on one category, just use:
<?php
print_r(get_defined_constants(true)['Core']);
?>
you can replace 'Core' by the category you wish (e.g. user):
<?php
print_r(get_defined_constants(true)['user']);
?>
Warning: only use this on development side
If you want to create a static method that you can copy and paste into each class you have constants created, you can use:
<php
public static function get_class_constants(): array
{
$reflect = new ReflectionClass(self::class);
return $reflect->getConstants();
}
?>