我有一个静态方法,它返回一个完全命名空间的类标识符。我希望能够像这样在单行中调用所述类的静态方法:
static::CLASSES('\name\spaced\Foo')::bar();
我假设我有某种解决问题。我一直在玩{}
,但无法让它工作。
如果可能的话,我不想执行以下操作(可行):
$foo = static::CLASSES('\name\spaced\Foo');
$foo::bar();
我有一个静态方法,它返回一个完全命名空间的类标识符。我希望能够像这样在单行中调用所述类的静态方法:
static::CLASSES('\name\spaced\Foo')::bar();
我假设我有某种解决问题。我一直在玩{}
,但无法让它工作。
如果可能的话,我不想执行以下操作(可行):
$foo = static::CLASSES('\name\spaced\Foo');
$foo::bar();
我想你正在寻找的是static::CLASSES('\name\spaced\Foo')->bar();
如果第一个表达式返回一个实例,那么您将调用一个实例方法
更新
现在第一个方法返回一个类名而不是我相信的实例方法
call_user_func(array(static::CLASSES('\name\spaced\Foo'), "bar"));
或带参数
call_user_func_array(array(static::CLASSES('\name\spaced\Foo'), "bar"), $paramArray);
可以向你展示一些爱