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

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));
于 2012-05-10T13:12:40.550 に答える