私は変数を持っています$string = "blah";
関数を動的に作成するにはどうすればよいですか?
どのように変数の値を名前として持つ関数を作成できますか? これはPHPで可能ですか? function $string($args){ ... }
か何かのように
、など、それを呼び出すことができる:
blah($args);
私は変数を持っています$string = "blah";
関数を動的に作成するにはどうすればよいですか?
どのように変数の値を名前として持つ関数を作成できますか? これはPHPで可能ですか? function $string($args){ ... }
か何かのように
、など、それを呼び出すことができる:
blah($args);
、しかし...
あなたはPHP 5.3を使用している場合は、無名関数を使用することができます。
<?php
$functionName = "doStuff";
$$functionName = function($args) {
// Do stuff
};
$args = array();
$doStuff($args);
?>
技術的には、これは関数を定義するのではなく、クロージャを定義します。違いを見るには 'get_defined_functions()['user']'と 'get_defined_vars()'を試してください。 – jameshfisher
@jameshfisher PHPの「クロージャ」は[匿名***関数***](http://php.net/manual/en/functions.anonymous.php)としても知られており、キーワード 'function'は構文確かに、これは*名前付き関数*を定義するものではありませんが、私はそれがまったく「関数」を定義していないと言うために、無計画の点まで歩行者を超えていると思います。 –
@ MarkAmery PHPの "関数"と "変数"は異なる名前空間にあります。彼らは根本的に異なっています。これは意味上の問題であり、構文上の問題ではありません。 – jameshfisher
これは良いアイデアではないかもしれませんが、あなたはこのような何か行うことができます:あなたが呼び出すことができます
$string = "blah";
$args = "args"
$string = 'function ' . $string . "({$args}) { ... }";
eval($string);
いいえ!単純にいいえ! :) – PeeHaa
面白い、これはうまくいくはずだ、私はそれを考えなかった:D – Alex
これは受け入れられた答えでなければならない。これは関数を定義する唯一の解決策であり、クロージャではありません。違いを見るには 'get_defined_functions()['user']'と 'get_defined_vars()'を試してください。 – jameshfisher
を変数に格納された名前による関数、変数に関数を割り当てたり、変数を使用して関数を呼び出すこともできます。あなたが望むものでないなら、もっと説明してください。偉大な設計上の選択のような音はありません、それはそれを再考する価値があるかもしれません
この回答はコメントとして素晴らしいでしょう:) – PeeHaa
call_user_func_array()
を試してみてください、あなたは[匿名関数](http://php.net/manual/en/functions.anonymous.php)をお探しですか? – Indranil
驚くべきアイデア。あなたは本当に何をしようとしていますか? –
いいえ、私は同じコードで利用できるように名前が必要です:) – Alex