明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

php 閉包案例解析

[摘要]匿名函數(shù)(Anonymous functions),也叫閉包函數(shù)(closures),允許 臨時創(chuàng)建一個沒有指定名稱的函數(shù)。最經常用作回調函數(shù)(callback)參數(shù)的值。當然,也有其它應用的情況。...
匿名函數(shù)(Anonymous functions),也叫閉包函數(shù)(closures),允許 臨時創(chuàng)建一個沒有指定名稱的函數(shù)。最經常用作回調函數(shù)(callback)參數(shù)的值。當然,也有其它應用的情況。

匿名函數(shù)目前是通過 Closure 類來實現(xiàn)的。

閉包函數(shù)也可以作為變量的值來使用。PHP 會自動把此種表達式轉換成內置類 Closure 的對象實例。把一個 closure 對象賦值給一個變量的方式與普通變量賦值的語法是一樣的,最后也要加上分號:

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

具體形式如下:

$a = function($arg1, $arg2) use ($variable) { 
// 聲明函數(shù)閉包到變量$a, 參數(shù)為$arg1, $arg2 ,該閉包需使用$variable變量
}

具體用法實例如下:

<?php
$result = 0;
 
$one = function()
{ var_dump($result); };
 
$two = function() use ($result)
{ var_dump($result); }; // 可以認為 $two這個變量 本身記錄了該函數(shù)的聲明以及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中文網其它相關文章!


學習教程快速掌握從入門到精通的SQL知識。