2011-01-03 3 views
2

Im пытается сделать функцию для ее запуска позже.Создайте динамическую функцию php и запустите ее позже - сохраните ее в переменной

В php 5.3.2-1 он отлично работает. Но в 5.1.6 это не так.

Код:

$func = function(){                
    echo "Hello!";                 
};                    

echo "Before Hello";                
$func(); 

Кто-нибудь знает, как эмулировать это в 5.1.6?

Спасибо.

Eduardo

ответ

3

Анонимные функции доступны с PHP 5.3. Вы не можете использовать их в более старых версиях. Взгляните на the docs.

+0

Спасибо за ваш быстрый ответ. Знаете ли вы какой-либо патч, который я могу добавить в 5.1.6, чтобы иметь доступ к этим анонимным функциям? –

+0

@Edu: Я не думаю, что вы можете имитировать это поведение, используя собственный PHP. Вам нужно будет перекомпилировать PHP с поддержкой анонимных функций (это, вероятно, не так просто, как кажется, так как вам нужно сделать тяжелый ручной поиск и запуск). Было бы намного проще перейти на более новую версию PHP. – jwueller

7
$func = create_function('','echo "Hello!";'); 

echo "Before Hello"; 
$func(); 

, чтобы иметь возможность «присвоить функцию переменной», а не копаться в Eval-иш код:

function my_not_so_anonymous_function1() 
{ 
    echo "Hello!"; 
} 
$func = 'my_not_so_anonymous_function1'; 

echo "Before Hello"; 
$func(); 
+0

Я ненавижу этот код eval-ish, но это единственный обходной путь, о котором я знаю. +1! – jwueller

+0

Спасибо. Но это решение не для меня. Я хочу написать много кода, и я действительно не хочу создавать функцию как строку. Не подходит для последующей отладки. –

+0

Вопрос в том, как подражать чему-то, что недоступно. Это самый очевидный ответ. Существует одна альтернатива, зависание ... – mvds

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