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()來驗證某些常量是否存在。