defined() 函数用于检查指定的常量是否已经定义。这个函数返回一个布尔值,如果常量已定义则返回 true,否则返回 false。
defined(string $name): bool
$name:常量的名称,作为字符串传入。
<?php
define("SITE_URL", "http://m66.net");
if (defined("SITE_URL")) {
echo "常量 SITE_URL 已定义,值为:" . SITE_URL;
} else {
echo "常量 SITE_URL 未定义";
}
?>
在上面的代码中,我们首先使用 define() 定义了常量 SITE_URL,然后通过 defined() 检查它是否已定义。结果会输出 "常量 SITE_URL 已定义,值为:http://m66.net"。
如果我们尝试检查一个未定义的常量,defined() 会返回 false。
<?php
if (defined("NON_EXISTENT_CONSTANT")) {
echo "常量 NON_EXISTENT_CONSTANT 已定义";
} else {
echo "常量 NON_EXISTENT_CONSTANT 未定义";
}
?>
输出结果为 "常量 NON_EXISTENT_CONSTANT 未定义",因为该常量并没有被定义。
get_defined_constants() 函数返回一个数组,其中包含了当前所有已定义的常量,包括内置常量和用户自定义常量。这个函数对于调试和查看系统中已有常量非常有用。
get_defined_constants(bool $categorize = false): array
$categorize(可选):如果设置为 true,返回的数组会按类别分组。
<?php
define("SITE_NAME", "m66.net");
define("DEBUG_MODE", true);
$constants = get_defined_constants();
echo "<pre>";
print_r($constants);
echo "</pre>";
?>
运行该代码后,你将看到所有当前定义的常量,包括 PHP 内置常量和我们自定义的 SITE_NAME 和 DEBUG_MODE 常量。
如果我们设置 $categorize 为 true,则返回的数组会按照类别进行分组,常量按组存储。如下所示:
<?php
$categorized_constants = get_defined_constants(true);
echo "<pre>";
print_r($categorized_constants);
echo "</pre>";
?>
defined() 和 get_defined_constants() 都涉及到常量的检查和操作,但它们的功能有所不同。
defined() 用于检查某个常量是否已定义,返回的是布尔值,适用于单个常量的检查。
get_defined_constants() 用于获取所有已定义的常量,返回一个数组,适用于查看或调试所有常量。
例如,我们可以通过 get_defined_constants() 列出所有常量,并结合 defined() 来验证某些常量是否存在。