Почему нельзя вызвать статический метод у контекстной переменной, содержащей имя класса? Такое дело:classname = $classname;
}
protected function Test() {
return method_exists($this->classname, '__test') ? $this->classname::__test() : true; // unexpected "::" operator at this line.
}
protected function GetFilePath() {
return self::classFolder.str_replace('\\', DIRECTORY_SEPARATOR, $this->classname);
}
public static function Load($classname) {
$this = new self($classname);
$filepath = self::GetFilePath();
return file_exists($filepath) && include_once($filepath) && self::Test();
}
}

21 Авг 2019 в 07:02
176 +1
1
Ответы
1

Нельзя вызвать статический метод у контекстной переменной, содержащей имя класса, потому что в момент вызова статического метода необходимо указать имя класса явно, а не через переменную. Таким образом, использование -> или :: операторов с переменной, содержащей имя класса, не допускается в PHP.

В вашем примере, в методе Test(), вы пробуете вызвать статический метод __test() используя переменную $this->classname. Вместо этого, вы должны вызвать метод напрямую, указав имя класса явно, например:

return method_exists($this->classname, '__test') ? $this->classname::__test() : true;

следует заменить на:

$class = $this->classname;
return method_exists($class, '__test') ? $class::__test() : true;

Также, в методе GetFilePath() вы пытаетесь вызвать статический метод GetFilePath() с использованием self::, однако этот метод является нестатическим. Вместо этого, вы можете вызвать его через переменную $this:

$filepath = $this->GetFilePath();

Исправление этих проблем поможет вам исправить ошибки в вашем коде.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 416 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир