#php
#php
Вопрос:
допустим, у меня было это
$src = "function($message) { echo $message; }"
Я ищу способ превратить исходный код в виде строки в реальную функцию во время выполнения, вроде
$say_message = magic_command($src);
$say_message("hello");
но я не нашел способа сделать это.
Если вы размышляете о цели, я извлекаю данные из большой строки. Чтобы упростить изменение процедуры, я создал промежуточный язык (регулярное выражение здесь действительно не подойдет), который я просто оцениваю прямо сейчас. Я подумал, что превращение процедуры в встроенную функцию php может ускорить обработку.. стоит попробовать. Безопасность не вызывает беспокойства, я единственный, кто использует это.
Комментарии:
1.
eval()
будет ли функция, которую вы ищете: php.net/manual/en/function.eval.php2. о, об этом не подумал
Ответ №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");