为什么以下代码会给我一个例外,说明我的常量未定义
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)) {}
答案 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');