PhP中的匿名函數與use


最近再做一個有關於考試系統的項目,是檢驗一個自己的php基礎,屬於一個比較簡單的項目吧,但是卻遇到了諸多困難呀!

廢話不多說,直接上乾貨:什麼是PHP匿名函數?    看官方解釋:
匿名函數(Anonymous functions),也叫閉包函數(closures),允許 臨時創建一個沒有指定名稱的函數。最經常用作回調函數(callback)參數的值。當然,也有其它應用的情況。

下面是一個匿名函數的實例:

<?php
header("content-type:text/html;charset=utf-8");

//下面我們寫一個匿名函數
$func=function($data){
	for($i=0;$i<$data;$i++){
		echo $i."<br/>";
	}
};
//調用匿名函數
$func(100);
?>
結果是從0到$data-1

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

use: use子句 讓匿名函數使用其作用域的變量


下面是幾個小例子,幫助我們去理解:

function test()
{
  $param2 = 'every';
  // 返回一個匿名函數
  return function ($param1) use ($param2) {
    // use子句 讓匿名函數使用其作用域的變量
    $param2 .= 'one';
    print $param1 . ' ' . $param2;
  };
}
$anonymous_func = test();
$anonymous_func('hello');

function test()
{
  $param2 = 'everyone';
  $func = function ($param1) use ($param2) {
    // use子句 讓匿名函數使用其父作用域的變量
    print $param1 . ' ' . $param2;
  };
  $param2 = 'everybody';
  return $func;
}
$anonymous_func = test();
$anonymous_func('hello');

function test()
{
  $param2 = 'everyone';
  $func = function ($param1) use (&$param2) {
    // use子句 讓匿名函數使用其父作用域的變量
    print $param1 . ' ' . $param2;
  };
  $param2 = 'everybody';
  return $func;
}
$anonymous_func = test();
$anonymous_func('hello');

自己動手寫一下,注意觀察運行結果哦
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章