9

我正在 Symfony2 上开发,我需要调用一个类的方法,这两个方法都只在运行时知道。

我已经在项目中成功使用了变量函数call_user_func但是这次他们给我带来了问题......

我的代码看起来像这样

namespace MyBundleNamespace;

use MyBundle\Some\Class;

class MyClass
{
    public static function myFunction() { ... }
}

在其他一些文件中我需要这样做

MyClass::myFunction();

但动态的,所以我都尝试了

$class = "MyClass";
$method = "myFunction";

$class::$method();

$class = "MyClass";
$method = "myFunction";
call_user_func("$class::$method");

但我得到一个class MyClass not found错误。当然,该课程已正确包含在内,use并且如果我这样称呼MyClass::myFunction()它,它就可以工作。

我还尝试按照此问题答案评论中的建议手动触发自动加载器,但它不起作用。此外,class_exists返回false.

我错过了什么?有任何想法吗?

谢谢!

4

1 回答 1

26

您缺少名称空间:

$class = '\\MyBundleNamespace\\MyClass';
$method = 'myFunction';

两个电话都应该工作:

call_user_func("$class::$method");
call_user_func(array($class, $method));
于 2012-05-10T13:12:40.550 回答