php閉包學習

2021-06-26 18:14:54 字數 1549 閱讀 1683

<?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一樣,閉...