我正在使用Symfony2进行开发,我需要在类上调用一个方法,这两个方法都只在运行时知道。
我已经在项目中成功使用了variable functions和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()
就好了。
我也尝试按照this question answer评论中的建议手动触发自动加载器,但它不起作用。此外,class_exists
返回了false
。
我错过了什么?有什么想法吗?
谢谢!
答案 0 :(得分:19)
你错过了命名空间:
$class = '\\MyBundleNamespace\\MyClass';
$method = 'myFunction';
这两个电话都应该有效:
call_user_func("$class::$method");
call_user_func(array($class, $method));