これはPHP 5.6でタグ付けされています。正しい答えは、2行(実際に必要が感じられる場合は実際には同じ行に置くことができます)またはcall_user_func
またはcall_user_func_array
のいずれかを使用することです。
構文の制限の周りの作業は物事が一度に行わ取得する方法を求めて多くの人の質問に、右あなたが使用できるPHP 7におけるアップUniform Variable Syntax RFC修正のもののように:
($prefix . 'funcname')();
このRFCは下-感謝はなはだしくです。
は、ここでのことだ、あなた実際には、以前のバージョンで何をしようとして行うことができます。
金田。
警告:これは嫌です。他のプログラマーからの報復の危険性があります。
${${$prefix . 'funcname'} = $prefix . 'funcname'}();
それは絶対に恐ろしいですが、それは(そしておそらくそれ以前、私は気にしませんでしたしようとしています。)それはすべてのは$prefix = "prefix_";
を言わせて説明の便宜上
PHPのサポートされているすべてのバージョンで動作します。
最初に${$prefix . 'funcname'}
は、$prefix_funcname
に解決するvariable variable(これらは使用しないでください)を作成します。
ので
${$prefix . 'funcname'} = $prefix . 'funcname'
が
$prefix_funcname = "prefix_funcname"
にうまくいくと${...}
を最も外側the value of an assignment expression is the value assigned値"prefix_funcname"
を取得し、あなたは再び我々はすでに値を与えてくれた$prefix_funcname
に解決する変数の変数を与えるので、 "prefix_funcname"
。
prefix_funcname()
への可変関数呼び出しを残しておきます。
しないでください。
私はあなたが探していると思います: 'call_user_func()' – Rizier123
_string_関数ではない_variable_関数であるため、2行または@ Rizier123ウェイが唯一の方法です。 – AbraCadaver