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