2016-10-23 3 views
0

내가이런타임 중에 문자열을 함수로 변환하는 방법이 있습니까?

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

내가 그렇다고

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

같은 런타임 동안 실제 함수로 문자열로 소스를 설정하는 방법을 찾고 있어요 있었다라고하지만 난 못 찾았어요 그것을하는 방법.

목적을 숙고하고 있다면 큰 문자열에서 데이터를 추출하고 있습니다. 프로 시저를 변경하는 것을 더 간단하게하기 위해, 나는 지금 당장 eval'ing하고있는 중간 언어 (정규식은 실제로 여기서는하지 않을 것입니다)를 만들었습니다. 프로 시저를 PHP 네이티브 함수로 변환하면 처리 속도가 빨라질 수 있습니다. 보안은 걱정할 필요가 없습니다. 나는 이것을 사용하는 유일한 사람입니다.

+2

'평가 후면을 사용하지만 하나의 문자열에서 그것을 만들'기능 당신이 찾고있는 것 : 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"); 
관련 문제