#php #function #variables #functional-programming
#php #функция #переменные #функциональное программирование
Вопрос:
Я пытаюсь вернуть значение функции самостоятельного вызова в переменную, которую я буду использовать позже, но получаю следующую ошибку Ошибка синтаксического анализа: синтаксическая ошибка, неожиданная ФУНКЦИЯ T_FUNCTION, ожидание ‘)’
есть идеи, что я делаю не так? Это способ сделать это? Вот код:
$clientText = call_user_func(function(){
if($lang == 'en'){
return <<<END
<p>hello world</p>
END;
} else {
...
}
});
Спасибо.
Обновить
Только что обнаружил, что моя версия php равна 5.2. Все еще возможно сделать что-то подобное?
Ответ №1:
Под php 5.2:
Ничто не может помешать вам определить функцию, а затем вызвать ее.
function getClientText($lang){
if($lang == 'en'){
return <<<END
<p>hello world</p>
END;
} else {
...
}
}
$clientText = getClientText($lang);
Или просто сделайте это:
$clientText = $lang == 'en' ? '<p>hello world</p>' : $something_else
Ответ №2:
на моем php это работает (протестировано с 5.4 alpha 2):
$clientText = call_user_func(function($lang)
{
if($lang == 'en')
{
return <<<END
<p>hello world</p>
END;
} else {}
}, 'en');
echo $clientText;
у вас, вероятно, не php 5.3, а php 5.2
Комментарии:
1. уф, вы абсолютно правы. phpinfo подтверждает версию PHP 5.2.17. Но как это сделать в 5.2?
2. не используйте анонимные функции: (или www.php.net/create_function это не круто