76

所以我使用了一个名为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';

编辑:
我意识到这些不是变量,它们是常量......

4

6 回答 6

96

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

您可以使用以下defined()功能检查它们的存在:

bool defined ( string $name )

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

于 2013-01-20T21:08:09.477 回答
93

使用defined()函数,例如:

if (defined('VAR_NAME')) {
    // Something
}
于 2013-01-20T21:07:32.210 回答
44

检查使用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;
}
?>
于 2013-01-20T21:07:02.113 回答
27

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

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

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

于 2016-06-11T12:49:13.977 回答
5

我认为您的意思是常量而不是变量!功能是defined();

见这里: 定义

于 2013-01-20T21:08:18.180 回答
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 ...
}

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

于 2020-05-08T13:12:01.667 回答