PHP const定义

时间:2014-10-27 12:18:45

标签: php const defined

为什么以下代码会给我一个例外,说明我的常量未定义

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)) {}

3 个答案:

答案 0 :(得分:2)

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

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


MyClass::myFunction('MY_CONST');

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

像:

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