PHP5.3で導入された無名関数だけど、PHP7で記法がより簡潔になった。
その用法も含めてメモ書き。
- 無名関数の即時実行
<?php (function(){ echo "PHP7で無名関数を実行する\n"; })(); call_user_func(function(){ echo "PHP5.x系で無名関数を実行する\n"; });
- スコープ外で定義されている変数を参照する
<?php // 外で定義した変数を無名関数内で使う $aaaaa = "test"; //PHP7 (function() use ($aaaaa){ echo $aaaaa . "\n"; })(); // 5.x系 call_user_func(function() use ($aaaaa){ echo $aaaaa . "\n"; });
- 関数を変数として扱う
<?php // 関数を変数に入れる $value = function(){ return "test2" . "\n"; }; echo $value();
- 変数に入れた関数を、別の関数の引数にする
<?php // 関数を引数にした関数 $value = function(){ return "test2" . "\n"; }; function doFunc(Callable $function){ return $function(); } echo doFunc($value);