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!!"
これはおもしろい。再帰処理とかコールバックとかいろいろ楽しいことができそうな予感。積極的に使ってみよう。