2013-05-30 58 views
1

我有一个静态方法返回完全名称间隔的类标识符。我想能够调用说类的静态方法在一个班轮像这样:解决多个静态方法调用

static::CLASSES('\name\spaced\Foo')::bar(); 

我想我有某种形式的一些解析问题。我一直玩{},但无法启动它的工作。

如果可能的话,我不想做以下(工作):

$foo = static::CLASSES('\name\spaced\Foo'); 
$foo::bar(); 

回答

1

我想你在找什么是static::CLASSES('\name\spaced\Foo')->bar();

如果第一个表达式返回一个实例,然后你要调用一个实例方法

UPDATE

现在,我第一次的ThOD返回一个类名,而不是一个实例方法,我相信

call_user_func(array(static::CLASSES('\name\spaced\Foo'), "bar")); 

或参数

call_user_func_array(array(static::CLASSES('\name\spaced\Foo'), "bar"), $paramArray); 

可以告诉你一些爱

+0

我看到你说的话。谢谢。我需要这是一个静态的电话。我改变了它,使'static :: CLASSES('\ name \ spaced \ Foo')'现在返回完全命名空间的类名,但static :: CLASSES('\ name \ spaced \ Foo'):: bar()仍然给我一个编译器错误。 – DudeOnRock

+0

更新了回答,以显示call_user_func_array的静态方法形式的用法。 – Orangepill