2016-10-23 2 views
0

сказать, что я этоЕсть ли способ превратить строку в функцию во время выполнения?

$src = "function($message) { echo $message; }" 

Я ищу способ, чтобы включить источник в виде строки в реальной функции во время выполнения, Сорта, как

$say_message = magic_command($src); 
$say_message("hello"); 

, но я не нашел способ сделать это.

Если вы обдумываете цель, я извлекаю данные из большой строки. Чтобы упростить изменение процедуры, я создал язык-посредник (regex действительно не будет делать здесь), который я просто оцениваю прямо сейчас. Я решил превратить процедуру в родную функцию php, чтобы ускорить обработку. Стоит сделать снимок. Безопасность не вызывает беспокойства, я единственный, кто ее использует.

+2

'Eval()' будет функция, которую вы ищете: http://php.net/manual/en/function.eval.php – Terry

+0

DOH, не думал об этом – user81993

ответ

1
$src = '$say_message = function($message) { echo $message; };'; 
eval($src); 
$say_message("hello"); 

Это реальный способ получить $ say_message работать как функция через строку, вы должны использовать eval(), убедитесь, что вы добавить правильный ; в коде

Существует и другой способ создать его, но не из одной строки, используя create_function()

$say_message = create_function('$message','echo $message;'); 
$say_message("hello"); 
Смежные вопросы