Определен констант PHP

Почему следующий код дает мне исключение, говоря, что моя константа не определена

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

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

Другие решения

Как указывает Даниэле Д, для начала вы называете это значение константой, а не ее именем.

И определенному нужен другой синтаксис для параметра при проверке констант класса, а не определенных констант. Так должно быть

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

Вам нужно передать все имя класса и константу в виде строки.

Подобно:

MyClass::myFunction('MyClass::MY_CONST');
0
По вопросам рекламы [email protected]