Как мне заставить что-то подобное работать?
$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
. Также читайте callbacks
PHP.
call_user_func(array($class_name, 'doSomething'), $arguments);
Отражение (поддерживает PHP 5) – как вы это сделаете. Прочитайте эту страницу, и вы сможете выяснить, как вызвать такую функцию.
$func = new ReflectionFunction('somefunction'); $func->invoke();
Ссылка на документацию