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

问题描述 投票:0回答:6

我正在使用一个名为 fuelphp 的 PHP 框架,并且我的这个页面是一个 HTML 文件,所以我无法在其中使用 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';
php constants
6个回答
111
投票

使用

defined()
函数,例如:

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

107
投票

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

您可以使用

defined()
函数检查它们是否存在:

bool defined ( string $name )

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


46
投票

使用

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;
}
?>

31
投票

这是一种更酷、更简洁的方法:

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

信用:neville dot tk 的丹尼尔 https://www.php.net/manual/en/function.define.php#84439


5
投票

我认为你的意思是常量而不是变量!函数是

defined();

参见这里:定义


1
投票

使用

defined
,你必须做这样的事情:

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

这可以工作,但是您可能会在代码编辑器(在我的例子中是带有 PHP Inteliphense 扩展的 Visual Studio Code)中收到第二行的恼人的错误消息,因为它找不到

CONST_NAME
。 另一种选择是使用常量函数。它接受一个字符串作为常量名称,如果常量未定义则返回 null:

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

由于您将常量名称作为字符串传递,因此它不会在代码编辑器上生成错误。

© www.soinside.com 2019 - 2024. All rights reserved.