B-Teck!

お仕事からゲームまで幅広く

【PHP】 PHPで無名関数を使う

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);