婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 淺析PHP中的閉包和匿名函數

淺析PHP中的閉包和匿名函數

熱門標簽:網絡電話400申請 外呼系統人工客服 福建高頻外呼防封系統哪家好 周口網絡回撥外呼系統 百度地圖標注類型是酒店 商丘外呼系統好處 400電話申請辦理 全國各省地圖標注點 隨州銷售電銷機器人公司

閉包是指在創建時封裝周圍狀態的函數。即使閉包所在的環境不存在了,閉包中封裝的狀態依然存在。

匿名函數就是沒有名稱的函數。匿名函數可以賦值給變量,還能像其他任何PHP對象那樣傳遞。不過匿名函數仍是函數,因此可以調用,還可以傳入參數。匿名函數特別適合作為函數或方法的回調。

注意:理論上講,閉包和匿名函數是不同的概念。不過,PHP將其視作相同的概念。所以,我們提到閉包時,指的也是匿名函數,反之亦然。

PHP閉包和匿名函數使用的句法與普通函數相同,但閉包和匿名函數其實是 偽裝成函數的對象(Closure類的實例) 。

創建閉包

$closure = function($name){
  return sprintf("Hello %s", $name);
}
echo $closure("jerry");
// 檢測$closure變量是否是一個閉包
var_dump($closure instanceof Closure);

以上代碼創建了一個閉包對象,然后將其賦值給 $closure 變量。閉包和普通的PHP函數很像,使用的句法相同,也接收參數,而且能返回值。

說明:我們之所以能夠調用 $closure 變量,是因為這個變量的值是一個閉包,而且閉包對象實現了 __invoke() 魔術方法。只要變量名后有 () ,PHP就會查找并調用 __invoke() 方法。

使用閉包

我們通常把PHP閉包當做當做函數和方法的回調使用。很多PHP函數都會用到回調函數,例如 array_map() preg_replace_callback() .如下示例,我們將用 array_map() 處理數組,將數組每一項自增1:

$nubmers = array_map(function($number){
  return $number++;
}, [1,2,3]);
var_dump($numbers);

附加狀態

PHP閉包不會像真正的javascrypt閉包那樣自動封裝應用的狀態,我們必須手動調用閉包對象的 bindTo() 方法或者使用 use 關鍵字,把狀態附加到PHP閉包上。

使用 use 關鍵字

使用 use 關鍵字來附加閉包狀態更加常見,因此我們先來看這種方式。使用 use 關鍵字把變量附加閉包上時,附加的變量會記住附加時賦給它的值。

function Car ($name){
  return function($statu)use($name){
    return sprintf("Car %s is %s", $name, $statu); 
  }
}
// 將車名封裝在閉包中
$car = Car("bmw");
// 調用車的動作
// 輸出--> "bmw is running"
echo $car("running");

注意:使用 use 關鍵字可以把多個參數傳入閉包,此時要像PHP函數或方法的參數一樣,使用逗號分隔多個參數。

使用 bindTo() 方法附加閉包的狀態

與其它PHP對象類似,每個閉包實例都可以使用 $this 關鍵字獲取閉包的內部狀態。閉包對象的默認狀態沒什么用,不過有一個 __invoke() 魔術方法和 bindTo() 方法。

bindTo() 方法為閉包增加了一些有趣的潛力。我們可以使用這個方法把 Closure 對象的內部狀態綁定到其它對象上。

bindTo() 方法的第二個參數很重要,其作用是指定綁定閉包的那個對象所屬的PHP類。因此,閉包可以訪問綁定閉包的對象中受保護和私有的成員變量。

class TestClosure
{
  private $name=[];
  private $age;
  private $sex;
  public function addPerson($name, $personCallback){
    // 將閉包對象綁定當前實例
    $this->name[$name] = $personCallback->bindTo($this, __CLASS__);
  }
  public function display($name){
    foreach ($this->name as $key => $callback){
      if($key == $name){
        // 執行閉包對象,將閉包狀態附加到類
        $callback();
      }
    }
    echo "name : {$name}\n";
    echo "age : {$this->age}\n";
    echo "sex : {$this->sex}\n";
  }
}
$person = new TestClosure();
$person->addPerson("jerry", function(){
  $this->age = 19;
  $this->sex = "man";
});
$person->display("jerry");
/** output
name : jerry
age : 19
sex : man
*/

總結

以上所述是小編給大家介紹的PHP中的閉包和匿名函數,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • 詳解PHP中instanceof關鍵字及instanceof關鍵字有什么作用
  • php中instanceof 與 is_a()區別分析
  • PHP 面向對象程序設計(oop)學習筆記(一) - 抽象類、對象接口、instanceof 和契約式編程
  • php的閉包(Closure)匿名函數初探
  • php的閉包(Closure)匿名函數詳解
  • PHP閉包(Closure)使用詳解
  • PHP中的閉包(匿名函數)淺析
  • PHP閉包實例解析
  • PHP 閉包詳解及實例代碼
  • php的instanceof和判斷閉包Closure操作示例

標簽:十堰 六安 定西 南寧 海南 樂山 佛山 迪慶

巨人網絡通訊聲明:本文標題《淺析PHP中的閉包和匿名函數》,本文關鍵詞  淺析,PHP,中的,閉包,和,匿名,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《淺析PHP中的閉包和匿名函數》相關的同類信息!
  • 本頁收集關于淺析PHP中的閉包和匿名函數的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产成人免费视频精品含羞草妖精| 91亚洲午夜精品久久久久久| 欧美一区二区视频在线观看2022| 中文字幕av一区二区三区| 9191成人精品久久| 狠狠狠色丁香婷婷综合久久五月| 亚洲国产欧美在线| 亚洲一区二三区| 国产精品你懂的在线欣赏| 中文字幕日韩欧美一区二区三区| 精品国产a毛片| 精品三级在线观看| 678五月天丁香亚洲综合网| 精品视频1区2区| 国产喷白浆一区二区三区| 精品一区二区在线免费观看| 91麻豆国产在线观看| 国产成人在线视频网站| 久久国产精品无码网站| 麻豆成人久久精品二区三区小说| 午夜精品久久久久久久久久久| 午夜久久福利影院| 成人精品视频一区二区三区尤物| 日韩高清国产一区在线| 国产黄色精品网站| 日本乱码高清不卡字幕| 日韩三级电影网址| 一区二区三区中文字幕| 精品一区二区久久久| 91在线国产观看| 国产欧美日韩综合精品一区二区| 国产精品蜜臀av| 国产成人精品亚洲777人妖| 99re在线精品| 国产精品污www在线观看| 免费在线观看一区二区三区| 欧美在线看片a免费观看| 日韩理论片网站| 成人福利视频在线| 国产精品热久久久久夜色精品三区| 亚洲日韩欧美一区二区在线| 不卡的av在线| 一个色在线综合| 在线观看免费成人| 日韩黄色片在线观看| 日本精品视频一区二区| 国产精品成人午夜| 国产尤物一区二区| 久久综合国产精品| 91网页版在线| 天堂久久一区二区三区| 欧美色电影在线| 国产一区二区剧情av在线| 热久久免费视频| 91污在线观看| 精品成a人在线观看| 成人动漫av在线| 亚洲综合色视频| 精品国内二区三区| 成人影视亚洲图片在线| 一区二区三区欧美日韩| 精品乱人伦一区二区三区| 国产精品88888| 奇米色777欧美一区二区| 欧美欧美欧美欧美首页| 国产精品资源在线看| 亚洲另类一区二区| 国产精品日韩成人| 欧美美女一区二区在线观看| 国产**成人网毛片九色| 天天综合天天做天天综合| 国产精品毛片a∨一区二区三区| 日本乱码高清不卡字幕| 高清免费成人av| 久草中文综合在线| 另类的小说在线视频另类成人小视频在线 | 久久夜色精品国产噜噜av| 一本色道a无线码一区v| 懂色av一区二区三区蜜臀| 日本亚洲最大的色成网站www| 国产欧美综合在线| 日韩精品一区二区三区在线观看| 欧美日韩精品免费| 欧美色成人综合| 制服.丝袜.亚洲.另类.中文| 欧美午夜电影网| 91麻豆123| 欧美第一区第二区| 日韩一级片网站| 久久女同性恋中文字幕| 久久久青草青青国产亚洲免观| 99久久综合国产精品| 日韩一区二区三区精品视频| 欧洲日韩一区二区三区| 欧美精品自拍偷拍| 日韩精品一区二区三区中文不卡 | 色av成人天堂桃色av| 欧美午夜电影一区| 日韩欧美一区二区三区在线| 制服.丝袜.亚洲.另类.中文 | 国产乱淫av一区二区三区| 成人手机电影网| 欧美乱熟臀69xxxxxx| 欧美一级片免费看| 中文字幕亚洲在| 久久99精品久久久久久国产越南 | 亚洲激情综合网| 国产成人免费视频网站| 欧美综合欧美视频| 久久亚洲精品小早川怜子| 亚洲欧美激情小说另类| 韩国毛片一区二区三区| 色妹子一区二区| 日韩欧美一区二区视频| 亚洲精品五月天| 白白色 亚洲乱淫| 亚洲精品一区二区三区四区高清| 亚洲另类在线制服丝袜| 成人激情动漫在线观看| 久久久久免费观看| 狠狠v欧美v日韩v亚洲ⅴ| 欧美三级视频在线观看| 亚洲一区二区三区免费视频| 色婷婷香蕉在线一区二区| 555www色欧美视频| 制服.丝袜.亚洲.中文.综合| 亚洲午夜久久久久久久久久久 | 亚洲成人免费av| 国产v日产∨综合v精品视频| 欧美成人女星排名| 国产一区二区三区不卡在线观看 | 日韩女优视频免费观看| 日韩成人精品在线| 91精品在线免费| 美女视频黄 久久| 精品对白一区国产伦| 日韩av网站免费在线| 久久综合狠狠综合久久综合88 | 99久久伊人网影院| 亚洲国产一区二区视频| 欧美色倩网站大全免费| 国产99久久久精品| 日韩**一区毛片| 国产精品久久免费看| 欧美日韩国产电影| 国产精品久久久久9999吃药| 欧美日韩久久不卡| 亚洲精品国产一区二区精华液| 亚洲理论在线观看| 精品国产青草久久久久福利| 国产在线国偷精品产拍免费yy| 精品国产一区二区三区久久久蜜月| 粉嫩嫩av羞羞动漫久久久| 亚洲免费av在线| 99国产精品久久久久| 亚洲黄色录像片| 欧美一级日韩免费不卡| 经典三级视频一区| 国产精品一二三区在线| 91精品国产综合久久小美女| 一区二区三区在线免费观看| 成人综合激情网| 精品伦理精品一区| 国产成人在线观看免费网站| 久久亚洲综合av| 高清成人在线观看| 久久久久久99精品| 国产尤物一区二区在线| 欧美不卡激情三级在线观看| 精品一区二区三区免费播放| 日韩一区二区三区在线视频| 日韩和欧美的一区| 精品理论电影在线| 亚洲乱码国产乱码精品精小说 | 99久久精品国产一区二区三区| 国产欧美一区二区三区在线看蜜臀| 夜夜精品视频一区二区| 欧美精品少妇一区二区三区 | 欧美高清在线一区二区| 亚洲观看高清完整版在线观看| 日韩一区二区影院| 99综合电影在线视频| 石原莉奈在线亚洲三区| 国产欧美一区二区精品性色超碰| 99在线视频精品| 国产乱人伦偷精品视频免下载| 午夜精品久久久久久久99水蜜桃 | 国内精品视频666| 亚洲激情欧美激情| 国产精品动漫网站| 久久综合九色综合97婷婷| 欧美日韩日日夜夜| 在线欧美日韩国产| 欧美综合视频在线观看| 一本久久a久久精品亚洲| 成人免费黄色大片| 成人黄色a**站在线观看| 九一久久久久久| 成人涩涩免费视频| 成人av一区二区三区|