Я пытаюсь вызвать статический метод, используя строку (тип автоматического eval, который делает интерпретатор).php не удается найти класс по вызову статического метода
Вызов класса на код в буквальном режиме работает отлично. Автозагрузчик разрешает загрузку класса и вызывается метод. Однако, если я использую строку с тем же именем класса и метода, она терпит неудачу.
рабочий пример:
$object = \vendor\package\class::method();
не рабочий пример:
$full_method = '\vendor\package\class::method';
$object = $full_method();
Оба примера правильный код, то первые из них работает отлично. Второй один выдает следующее сообщение об ошибке:
Фатальная ошибка: Вызов неопределенной функции \ поставщика \ пакет \ класс ::() метод в ...
автопогрузчика работает хорошо, даже на втором случае, проверка загруженные классы, файл загружается. Существует ограничение на использование этой «автоматической eval» функциональности, которой я не хватает?
Почему вы кладете в дополнительной переменной? Почему бы не использовать '$ object = \ vendor \ package \ class :: method();' – DanFromGermany
Это приведенный пример. Реальный код загружает строку из ini-файла, мне нужно выбрать метод вне кода (это фабрика). – Diego