2013-05-30 3 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

Смежные вопросы