Почему нельзя вызвать статический метод у контекстной переменной, содержащей имя класса? Такое дело: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(); } }
Нельзя вызвать статический метод у контекстной переменной, содержащей имя класса, потому что в момент вызова статического метода необходимо указать имя класса явно, а не через переменную. Таким образом, использование -> или :: операторов с переменной, содержащей имя класса, не допускается в PHP.
В вашем примере, в методе Test(), вы пробуете вызвать статический метод __test() используя переменную $this->classname. Вместо этого, вы должны вызвать метод напрямую, указав имя класса явно, например:
Также, в методе GetFilePath() вы пытаетесь вызвать статический метод GetFilePath() с использованием self::, однако этот метод является нестатическим. Вместо этого, вы можете вызвать его через переменную $this:
$filepath = $this->GetFilePath();
Исправление этих проблем поможет вам исправить ошибки в вашем коде.
Нельзя вызвать статический метод у контекстной переменной, содержащей имя класса, потому что в момент вызова статического метода необходимо указать имя класса явно, а не через переменную. Таким образом, использование -> или :: операторов с переменной, содержащей имя класса, не допускается в 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();Исправление этих проблем поможет вам исправить ошибки в вашем коде.