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

#php

#php

Вопрос:

допустим, у меня было это

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

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

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

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

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

Комментарии:

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

2. о, об этом не подумал

Ответ №1:

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

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

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

 $say_message = create_function('$message','echo $message;');
$say_message("hello");