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