我有一个静态方法,它返回一个完全名称间隔的类标识符。我希望能够在单行中调用所述类的静态方法,如下所示:
static::CLASSES('\name\spaced\Foo')::bar();
我认为我有某种解决问题。我一直在玩{}
,但无法让它发挥作用。
如果可能,我不想做以下(有效):
$foo = static::CLASSES('\name\spaced\Foo');
$foo::bar();
答案 0 :(得分:1)
我认为你要找的是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);
可能会告诉你一些爱情