php 匿名函數和use子句的使用

輸出的是hello world

$param1和$param2是閉包變量

function test()
{
	$param2 = 'every';
	// 返回一個匿名函數
	return function ($param1) use ($param2) {
		// use子句 讓匿名函數使用其作用域的變量
		$param2 .= 'one';
		print $param1 . ' ' . $param2;
	};
}

$anonymous_func = test();
$anonymous_func('hello');

下面的方式 輸出hello everyone 

function test()
{
	$param2 = 'everyone';
	$func = function ($param1) use ($param2) {
		// use子句 讓匿名函數使用其父作用域的變量
		print $param1 . ' ' . $param2;
	};
	$param2 = 'everybody';

	return $func;
}

$anonymous_func = test();
$anonymous_func('hello');

下面的方式 輸出hello everybody

$param2中多了一個引用

function test()
{
	$param2 = 'everyone';
	$func = function ($param1) use (&$param2) {
		// use子句 讓匿名函數使用其父作用域的變量
		print $param1 . ' ' . $param2;
	};
	$param2 = 'everybody';

	return $func;
}

$anonymous_func = test();
$anonymous_func('hello');


發佈了54 篇原創文章 · 獲贊 10 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章