mok*_*gio 7 php runtime symfony
我在Symfony2上开发,我需要在类上调用一个方法,这两个方法都只在运行时知道.
我已经成功地使用变量函数和call_user_func
项目,但是这一次他们给我的问题...
我的代码看起来像这样
namespace MyBundleNamespace;
use MyBundle\Some\Class;
class MyClass
{
public static function myFunction() { ... }
}
Run Code Online (Sandbox Code Playgroud)
在其他一些文件中,我需要这样做
MyClass::myFunction();
Run Code Online (Sandbox Code Playgroud)
但动态地,所以我尝试了两者
$class = "MyClass";
$method = "myFunction";
$class::$method();
Run Code Online (Sandbox Code Playgroud)
和
$class = "MyClass";
$method = "myFunction";
call_user_func("$class::$method");
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个class MyClass not found
错误.当然,这个类是正确包含的use
,如果我这样调用MyClass::myFunction()
就可以了.
我也尝试像这个问题答案评论中的建议手动触发自动加载器,但它不起作用.还class_exists
退了false
.
我错过了什么?有任何想法吗?
谢谢!
Jak*_*las 22
你错过了命名空间:
$class = '\\MyBundleNamespace\\MyClass';
$method = 'myFunction';
Run Code Online (Sandbox Code Playgroud)
两个调用应该工作:
call_user_func("$class::$method");
call_user_func(array($class, $method));
Run Code Online (Sandbox Code Playgroud)