PHPで無名関数を使ってみる。

Javascriptでおなじみの無名関数をPHPでも使えるみたいだったので遊んでみた。※PHP5.3以上に限る

とりあえずいつもどおり書いてみる。

$a = 'Hello ';
		
$noname = function($a = null) {
	return $a . 'world!!';
};

// 変数を渡さない場合
$res = $noname();
var_dump($res);
↓
string(7) "world!!"

// 変数を渡した場合
$res = $noname($a);
var_dump($res);
↓
string(13) "Hello world!!"

ちょっと感動。
そして下記例のように「use」を用いることで、無名関数の外にあるスコープの変数を無名関数内に渡すことが可能。
ここでは分かりやすく単なる変数で実験。

$a = 'Hello ';
$b = 'my ';

$noname = function($b = null) use ($a) {
	return $a . $b . 'world!!';
};

// 関数実行時に変数を渡さなくても、$aの'Hello 'は内部から使用することができる。
$res = $noname();
var_dump($res);
↓
string(13) "Hello world!!"

// 実行時変数を渡せばもちろん以下の結果になる。
$res = $noname($b);
var_dump($res);
↓
string(16) "Hello my world!!"

これはおもしろい。再帰処理とかコールバックとかいろいろ楽しいことができそうな予感。積極的に使ってみよう。