php是否可以确定常量是否是用户定义的?

时间:2013-11-05 00:51:03

标签: php

我知道通常我可以检查是否使用以下内容定义了常量:

defined('MY_CONSTANT')
defined('PHP_EOL')

第一个是我自己的用户定义常量。第二个是由php创建的。可以使用defined()检查两者并返回boolean值。

我的问题是..有没有办法确定它是用户定义的常量还是php创建的常量?例如,MY_CONSTANT应该返回一些等效的“用户定义”,而PHP_EOL应该返回一些相当于“php-defined”的内容。

2 个答案:

答案 0 :(得分:11)

使用get_defined_constants()参数true返回所有常量的分类数组。

用户定义的常量位于用户键下:

print_r(get_defined_constants(true));
// outputs:
// Array (
//    [Core] => Array (
//      [PHP_EOL] => 1
//    )
//    [user] => Array (
//      [MY_CONSTANT] => 1
//    )
// )

答案 1 :(得分:1)

请参阅get_defined_constants

http://php.net/manual/en/function.get-defined-constants.php

$CheckConst = 'MY_CONSTANT';
$is_user_defined = isset(get_defined_constants (true)['user'][$CheckConst]);