關於閉包函式
阿新 • • 發佈:2018-11-13
閉包函式其實跟普通函式呼叫沒啥子很大的差異,只不過所謂閉包,就是把當前函式內部封閉對外留個介面呼叫(普通函式好像也差不多)
基本用法:
function test($string){
return $string;
}
$a='test';
echo $b=$a('fffff');
這裡將函式當成了字串傳遞給了a變數,讓a變數有了函式一樣的功能,它的等效寫法就是:
function test($string){
return $string;
}
echo $b=test('fffff');
閉包還有可以用賦值的形式給變數;
function test1($a){
$b=function($a){
return $a;
};
echo $b($a);
}
test1('sdsdsd');
就像不能訪問全域性變數一樣:
$b=function($a){
return $a;
};
function test1($a){
echo $b($a);
}
注意:未定義變數:b
致命錯誤:函式名必須是字串
這樣報錯了。就如同想引入全域性變數要global一樣,當然閉包有use可以引入父類域但use是拷貝(除非你use的物件是引用。)
其實真的跟普通呼叫函式沒啥大的區別,無非就是能把函式當引數用,封裝了包裡面的內容並輸出一個結果。(類似C中的函式指標傳參)