当前位置: 首页> 最新文章列表> 使用 defined() 检查某个常量和 get_defined_constants() 的关系

使用 defined() 检查某个常量和 get_defined_constants() 的关系

M66 2025-05-22

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() 函数返回一个数组,其中包含了当前所有已定义的常量,包括内置常量和用户自定义常量。这个函数对于调试和查看系统中已有常量非常有用。

语法:

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_NAMEDEBUG_MODE 常量。

分类常量:

如果我们设置 $categorizetrue,则返回的数组会按照类别进行分组,常量按组存储。如下所示:

<?php
$categorized_constants = get_defined_constants(true);
echo "<pre>";
print_r($categorized_constants);
echo "</pre>";
?>

三、defined()get_defined_constants() 的关系

defined()get_defined_constants() 都涉及到常量的检查和操作,但它们的功能有所不同。

  • defined() 用于检查某个常量是否已定义,返回的是布尔值,适用于单个常量的检查。

  • get_defined_constants() 用于获取所有已定义的常量,返回一个数组,适用于查看或调试所有常量。

例如,我们可以通过 get_defined_constants() 列出所有常量,并结合 defined() 来验证某些常量是否存在。

示例: