<?php
//提到閉包就不得不想起匿名函式,
//也叫閉包函式(closures),貌似php閉包實現主要就是靠它。宣告乙個匿名函式是這樣:
$func=function ($value='')
;$func();//輸出test!!!
?>
閉包函式當成變數使用
<?php
//閉包函式當作變數來使用
$func_1=function ($value='')
;$func_2=function ($value='')
;//閉包函式當作變數來使用
function test($value)
test($func_1);//輸出 this is func_1!!!
test($func_2);//輸出 this is func_2!!!
//或者直接傳遞
test(function ($value='')//輸出 this is func_3!!!
);?>
閉包函式使用外部變數:php在預設情況下,匿名函式不能呼叫所在**塊的上下文變數,而需要通過使用use關鍵字。
如下,會報錯
<?php
//閉包函式當作變數來使用
$str='this is string';
$num=1;
$func_1=function ($value='')
;$func_1();
?>
如下
<?php
//閉包函式使用外部變數
$str='this is string';
$num=1;
$func_1=function ($value='')use($str,$num)
;$func_1();
//輸出
this is func_1!!!
this is string
1?>
閉包改變外部變數
<?php
//閉包函式使用外部變數
$str='this is string';
$num=1;
$func_1=function ($value='')use($str,$num)
;$func_1();
echo $num;
//輸出結果: 1 1
?>
和一般函式一樣,閉包函式不能改變外部變數的值,因為是值傳遞,想要改變外部變數的值,只需要在傳遞變數進去的時候在變數前加上"&"
<?php
//閉包函式使用外部變數
$str='this is string';
$num=1;
$func_1=function ($value='')use($str,&$num)
;$func_1();
echo $num;//輸出結果: 1 2
?>
PHP函式閉包
php的閉包函式和js的閉包是一樣的道理,都是函式內部的函式,同樣的閉包會儲存函式內的變數,以方便下次的使用。但是也會有執行次數越多,占用記憶體越多,造成記憶體洩漏的現象。接下來我們舉個例子來說明一下php的閉包,如下 例1 function getfunc print r array return...
PHP 閉包函式
php v5.3閉包函式,閉包函式沒有函式名稱,直接在function 傳入變數即可 使用時將定義的變數當作函式來處理 匿名函式也叫閉包函式 closures允許建立乙個沒有指定沒成的函式,最經常用作 函式引數的值。閉包函式沒有函式名稱,直接在function 傳入變數即可 使用時將定義的變數當作函...
php閉包研究
使用js的人對閉包是熟悉,以前接觸php的時候還不知道可以使用閉包,今天學習了一下,還是記錄下來 乙個簡單的例子 function test closures 這個結束符一定要加上,今天就這裡還除錯了一會 return func func test closures func 1 1 與js一樣,閉...