1. 程式人生 > >關於閉包函式

關於閉包函式

閉包函式其實跟普通函式呼叫沒啥子很大的差異,只不過所謂閉包,就是把當前函式內部封閉對外留個介面呼叫(普通函式好像也差不多)

基本用法:

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中的函式指標傳參)