首頁  >  文章  >  資料庫  >  php 閉包實例解析

php 閉包實例解析

怪我咯
怪我咯原創
2017-07-11 15:52:351114瀏覽

匿名函數(Anonymous functions),也叫閉包函數(closures),允許 暫時建立一個沒有指定名稱的函數。最常用作回呼函數(callback)參數的值。當然,也有其它所應用的情況。

匿名函數目前是透過 Closure 類別來實現的。

閉包函數也可以當作變數的值來使用。 PHP 會自動把此種表達式轉換成內建類別 Closure 的物件實例。把一個closure 物件賦值給一個變數的方式與普通變數賦值的語法是一樣的,最後也要加上分號:

閉包可以從父作用域中繼承變數。 任何此類變數都應該用 use 語言結構傳遞進去。 PHP 7.1 起,無法傳入此類變數: superglobals、 $this 或和參數重名。

具體形式如下:

$a = function($arg1, $arg2) use ($variable) { 
// 声明函数闭包到变量$a, 参数为$arg1, $arg2 ,该闭包需使用$variable变量
}

具體用法實例如下:

<?php
$result = 0;
 
$one = function()
{ var_dump($result); };
 
$two = function() use ($result)
{ var_dump($result); }; // 可以认为 $two这个变量 本身记录了该函数的声明以及use使用的变量的值
 
$three = function() use (&$result)
{ var_dump($result); };
 
$result++;
 
$one();  // outputs NULL: $result is not in scope
$two();  // outputs int(0): $result was copied
$three();  // outputs int(1)
?>


以上是php 閉包實例解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn