我知道通常我可以检查是否使用以下内容定义了常量:
defined('MY_CONSTANT')
defined('PHP_EOL')
第一个是我自己的用户定义常量。第二个是由 php 创建的。两者都可以检查defined()
并返回一个boolean
值。
我的问题是.. 有没有办法确定它是用户定义的常量还是 php 创建的常量?例如,MY_CONSTANT
应该返回一些等价的“用户定义”并且PHP_EOL
应该返回一些等价的“php-defined”。
我知道通常我可以检查是否使用以下内容定义了常量:
defined('MY_CONSTANT')
defined('PHP_EOL')
第一个是我自己的用户定义常量。第二个是由 php 创建的。两者都可以检查defined()
并返回一个boolean
值。
我的问题是.. 有没有办法确定它是用户定义的常量还是 php 创建的常量?例如,MY_CONSTANT
应该返回一些等价的“用户定义”并且PHP_EOL
应该返回一些等价的“php-defined”。
get_defined_constants()
与参数 of一起使用true
以返回所有常量的分类数组。
用户定义的常量在用户键下:
print_r(get_defined_constants(true));
// outputs:
// Array (
// [Core] => Array (
// [PHP_EOL] => 1
// )
// [user] => Array (
// [MY_CONSTANT] => 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]);