無名関数
サンプル
<?php
// コールバック関数として定義
$res = call_user_func(function ($data){
return $data;
}, "callback_data");
echo $res . "\n";
// 無名関数定義1
$func = function(){
return "aaaaaaaaaa\n";
};
echo $func();
echo "\n---\n";
// 無名関数定義2
$func2 = function($param){
return $param . "=" . "bbbbbbbbb\n";
};
echo $func2("data");
?>
クロージャとしての無名関数
<?php
$aaa = "a";
$clousre = function() use ($aaa){
$aaa .= ",aaa";
echo $aaa . "\n";
};
// クロージャ(useでの値が値渡しなので内部データは更新されない)
$clousre(); //
$clousre(); //
$bbb = "a";
$clousre = function() use (&$bbb){
$bbb .= ",bbb";
echo $bbb . "\n";
};
// クロージャ(useでの値が参照渡しなので内部データは更新される)
$clousre(); //
$clousre(); //
$ccc = "a";
$clousre = function($a = "") use (&$ccc){
$ccc .= ",ccc" . "," . $a;
echo $ccc . "\n";
};
// クロージャ(無名関数に引数指定時は設定可能)
$clousre("zz"); //
$clousre("10"); //
?>
クロージャとしての無名関数2
<?php
function test_func($param){
$a = $param;
return function() use (&$a){
return ++$a;
};
}
$aaa = test_func(10);
$a1 = $aaa();
echo $a1 . "\n";
$a2 = $aaa();
echo $a2 . "\n";
?>
クロージャとしてのクラス
最終更新:2012年08月12日 15:24