2013-03-29 3 views

ответ

6

Я понимаю, что вы хотите, но я думаю, что вы можете сделать это таким образом:

$obj = ($class = functionThatReturnsAStringValue()) ? new $class() : null; 
+0

Спасибо. Great one-liner :) – silkfire

+0

также, если 'functionThatReturnsAStringValue()' return 'false' вы можете изменить': null; 'на' new OtherClass() ' – Barif

2
function getObject() 
{ 
    return 'DateTime'; 
} 

$datetime = call_user_func(function ($obj) { return new $obj; }, getObject()); 
+0

, я думаю, используя' call_user_func() 'не лучшая практика. – Barif

+0

В зависимости от ваших потребностей. Также, вероятно, не рекомендуется использовать динамический вызов класса с помощью функции возврата строки в одной строке. ;) – MichaelRushton

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