如果我拥有的只是类名的字符串,如何从类中调用静态方法?

php
2022-08-30 09:10:07

我怎样才能让这样的东西工作?

$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();

基本上,在这里,我们在类的实例上调用静态方法。


推荐