1

私がという名前の関数を持っていると仮定しましょうprintuser()

今私がのような文字列を持っている場合

$myFunction = 'printuser()';

この文字列を関数として実行するにはどうすればよいですか?だからそれはprintuser()機能を果たすべきです

4

5 に答える 5

1
  1. evalを使用します。
  2. これを行うべきではありません。ほとんどの場合、より良い、より安全な、より安全な方法があります。
于 2012-11-26T18:17:02.497 に答える
1

実行する関数を指定したいだけ$myFunctionの場合は、次のようなことができます。

$myFunction = 'printuser';
$myFunction();

これは「変数関数」と呼ばれ、。よりも少し危険性が低くなりevalます。(既存の関数を呼び出すことはできますが、任意のコードを実行することはできません。)

ただし、注意が必要です。printuser存在しない場合、スクリプトは停止します。関数を呼び出す前に、関数の存在を確認することを検討してください。

$myFunction = 'printuser';
if (function_exists($myFunction))
    $myFunction();
else
    throw new BadFunctionCallException("Function '$myFunction' doesn't exist");

throw関数がない場合は、を実行したいものに置き換えます。それはほんの一例です。

于 2012-11-26T18:19:49.827 に答える
0

あなたが試すことができます

$myFunction = 'printuser()';
# Remove brakets
$myFunction = rtrim($myFunction, "()");
# Call Function Directly
$myFunction();

検証には、次を使用できますis_callable

is_callable($myFunction) and $myFunction();

簡単なデモ

于 2012-11-26T18:19:14.423 に答える