функция самостоятельного вызова внутри переменной php

#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 это не круто