create_function

create_function関数:匿名関数を作成する

使い方
//匿名関数の作成(2つの引数のうち大きい値を返す匿名関数)
$newfunction = create_function( ‘$arg1, $arg2′, ‘return ($arg1 >= $arg2) ? $arg1 : $arg2;’ );
//呼び出し方
$max_value = $newfunction( 10, 20 );

create_function関数は匿名関数を作成する関数です。
匿名関数とは名前を明示せずに動的に作成された関数のことです。ややこしいのですが、無名関数とは違います。無名関数はまた別の機会にご紹介します。
第1引数には匿名関数の引数を文字列で指定します。また、第2引数には関数の処理コードを同じく文字列で指定します。
上の使い方を見てもらえばわかる通り、文字列を’(シングルクォーテーション)で囲んでいることに注意してください。”(ダブルクォーテーション)で囲んでしまうと変数名のところがその変数の値で展開されてしまいます。

なお、戻り値にはユニークな関数名が返ってきます。PHPでは関数名の文字列の変数を使ってその関数を実行することができるので上の(呼び出し方)の用に関数を実行することができます。

なぜ、匿名関数と言うのか、関数名が匿名だから・・・ですかね。
最近では関数も個人情報を保護してほしくなったのか?
ちなみに私の個人的な実行環境では匿名関数の名前が「lambda_1, lambda_2, lambda_3 …」と言うような関数名になりました。

使いどころ
複数の要素に対して同じような処理を繰り返す場合、たとえばarray_walk関数などと組み合わせて使うといった使い方が思いつきました。
あとは複数の動的な要素に対して、さらに動的な処理をしなければならない場合に活躍する!と言いたいところなのですが、そんな状況はかなり稀ですし、この関数を使った実装は正直お勧めしません。
何故かと言うと動的な処理を行うということは、そこにセキュリティ上の脆弱性が生まれるからです。特に引数や画面からのパラメータを使って匿名関数を呼び出すなんてことは怖くてできません・・・
では、なぜ紹介したのか。そこに関数があったからです。。。と言うのは半分冗談ですが、
PHP5.3で無名関数が登場したため、それで多くの場合賄えると思います。
なるべく無名関数を使いましょう。
もちろん、PHP5.3より古いPHPのバージョンではcreate_function関数を使うしかないですが、あまり強引な実装をされないことを切に願います。

公式サイト
http://www.php.net/manual/ja/function.create-function.php