無名関数

サンプル

<?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