Как я могу вызвать статический метод из класса, если все, что у меня есть, - это строка имени класса? Как я могу заставить что-то подобное работать? $class_name = 'ClassPeer'; $class_name::doSomething(); Ответ 1 В зависимости от версии PHP: call_user_func(array($class_name, 'doSomething')); call_user_func($class_name .'::doSomething'); // >5.2.3 Ответ 2 Чтобы развернуть мощность автозаполнения IDE и обнаружение ошибок, используйте это: $class_name = 'ClassPeer'; $r = new \ReflectionClass($class_name ); // @param ClassPeer $instance $instance = $r->newInstanceWithoutConstructor(); //$class_name->doSomething(); $instance->doSomething(); В основном здесь мы вызываем статический метод для экземпляра класса. Ответ 3 Используйте call_user_func. Также читайте на PHP callbacks. call_user_func(array($class_name, 'doSomething'), $arguments); Ответ 4 Отражение (поддерживается PHP 5) - как вы это сделаете. Прочитайте эту страницу, и вы сможете выяснить, как вызвать такую функцию. $func = new ReflectionFunction('somefunction'); $func->invoke(); Ссылка документации
Ответ 1 В зависимости от версии PHP: call_user_func(array($class_name, 'doSomething')); call_user_func($class_name .'::doSomething'); // >5.2.3
Ответ 2 Чтобы развернуть мощность автозаполнения IDE и обнаружение ошибок, используйте это: $class_name = 'ClassPeer'; $r = new \ReflectionClass($class_name ); // @param ClassPeer $instance $instance = $r->newInstanceWithoutConstructor(); //$class_name->doSomething(); $instance->doSomething(); В основном здесь мы вызываем статический метод для экземпляра класса.
Ответ 3 Используйте call_user_func. Также читайте на PHP callbacks. call_user_func(array($class_name, 'doSomething'), $arguments);
Ответ 4 Отражение (поддерживается PHP 5) - как вы это сделаете. Прочитайте эту страницу, и вы сможете выяснить, как вызвать такую функцию. $func = new ReflectionFunction('somefunction'); $func->invoke(); Ссылка документации