【问题标题】:How to check if a defined constant exists in PHP?如何检查 PHP 中是否存在已定义的常量?
【发布时间】:2013-01-03 22:59:05
【问题描述】:

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

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

【问题讨论】:

  • 论文不是变量,而是定义。
  • 为什么对这个问题投了这么多反对票?
  • @EricMORAND 还有,为什么对每个答案都投反对票?
  • @FrankPresenciaFandos 是的,我已经做到了,但是我所做的所有尝试都没有让我到哪里去。
  • @ryanc1256 关于答案的否决,这表明答案不正确/有害。

标签: php if-statement constants fuelphp


【解决方案1】:

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

您可以使用defined() 函数检查它们的存在:

bool defined ( string $name )

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

【讨论】:

    【解决方案2】:

    使用defined() function,例如:

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

    【讨论】:

    • 为了节省额外几分钟的调试时间,请确保 VAR_NAME 包含在引号中,如本答案和文档中所示。
    • 加引号,这么简单却又这么容易忽略!
    【解决方案3】:

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

    【讨论】:

    • 不正确; OP 的“变量”不是变量 - 从第一个版本的代码中可见,稍后在文本中进行说明。
    • 您首先询问如何检查变量是否存在..然后您将其更改为常量。 ...如果您不投票反对我的帖子,那将是礼貌...
    • 我没有 - 我不是提问者。请注意,投票是关于正确性和努力的。请注意,删除答案是免费的,并且可以收回您的分数,无论如何您都必须这样做(或编辑直到正确为止)。
    • 请注意,这里不欢迎仅提供链接的答案(另请注意,您无意中链接到了德语翻译)
    【解决方案4】:

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

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

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

    【讨论】:

      【解决方案5】:

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

      请看这里:defined

      【讨论】:

        【解决方案6】:

        使用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 名称作为字符串传递,它不会在代码编辑器上生成错误。

        【讨论】:

        • 如果它已经被定义,这将引发警告。
        猜你喜欢
        • 1970-01-01
        • 2012-04-27
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 2010-12-24
        • 2010-10-19
        • 2022-12-03
        相关资源
        最近更新 更多