【问题标题】:PHP const definedPHP 常量定义
【发布时间】:2014-10-27 12:18:44
【问题描述】:

为什么下面的代码给我一个异常说我的常量没有定义

MyClass::myFunction(MyClass::MY_CONST); // THIS GIVES THE ERROR   

// This is the class..
class MyClass {

    const MY_CONST = 'BLA';

    public static function myFunction($key) {
        if (!defined($key)) {
            throw new Exception("$key is not defined as a constant");
        }
    }
}

我试过了

  • if (!defined($key)) {}
  • if (!defined(self::$key)) {}
  • if (!defined(__CLASS__ . $key)) {}

【问题讨论】:

  • 可以说是时间问题。您正在尝试在定义之前使用该常量。
  • 你需要将它作为字符串传递
  • 在尝试编写示例代码时,我想知道您什么时候会使用它?如果未定义 MY_CONST,您将无法在第一行中使用它

标签: php constants defined


【解决方案1】:

您必须将其作为字符串传递:

public static function myFunction($key) {
    if (!defined('self::'.$key)) {
        throw new Exception("$key is not defined as a constant");
    }
}


MyClass::myFunction('MY_CONST');

【讨论】:

    【解决方案2】:

    正如 Daniele D 指出的那样,一开始你用常量的值而不是它的名字来调用它。

    在检查类常量时,定义的参数需要不同的语法,而不是定义的常量。应该是

    if (!defined('self::' . $key)) {
    

    【讨论】:

      【解决方案3】:

      您需要将整个类名和常量作为字符串传递。

      喜欢:

      MyClass::myFunction('MyClass::MY_CONST');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-14
        • 2011-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-19
        • 1970-01-01
        相关资源
        最近更新 更多