2016-10-23 3 views
0

は、私がこの実行時に文字列を関数に変換する方法はありますか?

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

私はみかん

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

のように、実行時に実際の関数に文字列としてソースを有効にする方法を探していましたと言うが、私は見つかっていませんそれを行う方法。

目的を熟考しているなら、大きな文字列からデータを抽出しています。手続きを変更するのを簡単にするために、私は中間言語を作成しました(ここでは正規表現は実際にはありません)。私はちょうど今eval'ingしています。プロシージャを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"); 
関連する問題