如何检查 PHP 中是否存在已定义的常量?

所以我使用的是一个名为 Fuelphp的 PHP 框架,我有这个页面是一个 超文本标示语言文件,所以我不能在其中使用 PHP。我有另一个文件,其中有一个顶部的酒吧,我的 HTML 文件将通过 ajax 调用。

如何检查 PHP 中是否存在常量?
我想检查 fuelphp 框架文件的位置。

这些是我需要检查的常量(实际上,我只需要检查其中一个) :

define('DOCROOT', __DIR__.DIRECTORY_SEPARATOR);
define('APPPATH', realpath(__DIR__.'/fuel/app/').DIRECTORY_SEPARATOR);
define('PKGPATH', realpath(__DIR__.'/fuel/packages/').DIRECTORY_SEPARATOR);
define('COREPATH', realpath(__DIR__.'/fuel/core/').DIRECTORY_SEPARATOR);
require APPPATH.'bootstrap.php';

编辑:
我意识到这些不是变量,而是常量。

103673 次浏览

使用 defined('CONSTANT')函数进行检查。

手册中的一个例子:

<?php
/* Note the use of quotes, this is important.  This example is checking
* if the string 'TEST' is the name of a constant named TEST */
if (defined('TEST')) {
echo TEST;
}
?>

使用 defined()功能,例如:

if (defined('VAR_NAME')) {
// Something
}

首先,这些不是变量,而是常量。

你可以通过使用 defined()函数来检查它们的存在:

bool defined ( string $name )

检查给定常数是否存在并已定义。

我想你的意思是常量不是变量! 函数是 defined();

看这里: 定义

这里有一个更酷更简洁的方法:

defined('CONSTANT') or define('CONSTANT', 'SomeDefaultValue');

图片来源: Daniel at Neville dot tk Https://www.php.net/manual/en/function.defined.php#84439

对于 defined,你必须这样做:

if (defined("CONST_NAME"))
$value = CONST_NAME;

这将工作,但是您可能会在您的代码编辑器(在我的例子中是 Visual Studio Code with PHP Intelphense 扩展)中得到第二行的恼人错误消息,因为它不会找到 CONST_NAME。 另一种选择是使用常数函数。它接受一个字符串作为常量名,如果未定义该常量,则返回 null:

$value = constant("CONST_NAME");
if ($value != null)
{
// Use the value ...
}

因为您将 const 名称作为字符串传递,所以它不会在代码编辑器上生成错误。