PHP按类名调用类的静态方法

PHP按类名调用类的静态方法,php,Php,这是一个语法问题,我想。。。我有一个类名数组,我在工厂中使用它通过对象类型代码生成对象: $array = ['a' => '\namespace\AClass', 'b' => '\namespace\BClass']; 我可以从字符串名称很好地实例化这些类: $classname = $array['a']; return new $classname($arg1, $arg2); 我试图做的是调用数组或字符串中命名的类的静态方法,而不必初始化对象-类似于: $classna

这是一个语法问题,我想。。。我有一个类名数组,我在工厂中使用它通过对象类型代码生成对象:

$array = ['a' => '\namespace\AClass', 'b' => '\namespace\BClass'];
我可以从字符串名称很好地实例化这些类:

$classname = $array['a'];
return new $classname($arg1, $arg2);
我试图做的是调用数组或字符串中命名的类的静态方法,而不必初始化对象-类似于:

$classname = $array['a'];
return $classname::formatArg($arg1);
显然,这不起作用,因为$classname是一个字符串,那么我如何告诉PHP我正在尝试使用该名称访问对象呢?

查看这篇文章


看起来您的代码在PHP5.3中还可以。如果你<5.3岁,还有一些解决问题的方法。

你确定这不管用吗?如果是这样,您可以使用call\u user\u func。无论是实例还是静态,它都与类方法一起工作。您会遇到什么错误?我运行了一个简单的版本,它可以工作。类AClass{static function formatArg$arg1{echo$arg1;}}$array=array'a'=>'\AClass',b'=>'\namespace\BClass'$arg1=‘你好’$classname=$array['a'];var_dump$classname$classname::formatArg$arg1;呵呵。我又试了一次,它实际上起了作用。我在PHP中遇到了一个意外的字符错误,可能是打字错误?IDE将其标记为错误方法formatArg未在字符串中找到,感谢您的回复和测试!