PHP call_user_func on a static method
php, runtime, symfony
Solution
You're missing the namespace:
$class = '\\MyBundleNamespace\\MyClass';
$method = 'myFunction';
Both calls should work:
call_user_func("$class::$method");
call_user_func(array($class, $method));
Problem
I am developing on Symfony2 and I need to call a method on a class, both known only at runtime. I have already successfully used variable functions and `call_user_func` in the project, but this time they give me problems... My code looks like this ``` namespace MyBundleNamespace; use MyBundle\Some\Class; class MyClass { public static function myFunction() { ... } } ``` and in some other file I need to do this ``` MyClass::myFunction(); ``` but dynamically, so I tried both ``` $class = "MyClass"; $method = "myFunction"; $class::$method(); ``` and ``` $class = "MyClass"; $method = "myFunction"; call_user_func("$class::$method"); ``` But I get a `class MyClass not found` error. Of course the class is included correctly with `use` and if I call `MyClass::myFunction()` just like that it works. I also tried to trigger the autoloader manually like suggested in this question answer comment, but it did not work. Also, `class_exists` returned `false`. What am I missing? Any ideas? Thanks!