亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

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

2020-03-22 19:45:13
字體:
來源:轉載
供稿:網友
PHP閉包和匿名函數使用的句法與普通函數相同,但閉包和匿名函數其實是偽裝成函數的對象(Closure類的實例) 。下面給大家介紹PHP中的閉包和匿名函數知識,需要的朋友參考下吧

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

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

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

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

創建閉包

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

以上代碼創建了一個閉包對象,然后將其賦值給 $closure 變量。閉包和普通的html' target='_blank'>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 /** outputname : jerryage : 19sex : man*/

總結

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

您可能感興趣的文章:源碼分析 Laravel 重復執行同一個隊列任務的原因講解

關于 Laravel Redis 多個進程同時取隊列的問題詳解

php-msf源碼的詳解


以上就是淺析PHP中的閉包和匿名函數解釋的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91高清视频免费观看| 中文一区二区视频| 国产亚洲精品久久久| 久久久久久久电影一区| 久久夜色精品国产亚洲aⅴ| 国产亚洲精品久久久久动| 亚洲精品自拍第一页| 亚洲国产精品悠悠久久琪琪| 国产一区二区动漫| 日本免费一区二区三区视频观看| 日韩av一区在线观看| 萌白酱国产一区二区| 欧美一级淫片丝袜脚交| 成人免费看吃奶视频网站| 欧美日韩亚洲视频一区| 91免费综合在线| 久久久999精品免费| 欧美日韩成人在线观看| 国产精自产拍久久久久久| 国产成人福利夜色影视| 深夜福利亚洲导航| 国产在线播放不卡| 亚洲午夜精品视频| 欧美午夜片欧美片在线观看| 成人夜晚看av| 久久深夜福利免费观看| 九九久久久久99精品| 18性欧美xxxⅹ性满足| 成人福利网站在线观看11| 欲色天天网综合久久| 欧美国产高跟鞋裸体秀xxxhd| 国产日本欧美视频| 久久久久久久久久婷婷| 国产午夜精品理论片a级探花| 亚洲r级在线观看| 亚洲精品久久久久中文字幕二区| 国产精品久久不能| 69av视频在线播放| 国产不卡在线观看| 91精品久久久久久久久| www.久久撸.com| 亚洲福利视频二区| 日本一区二三区好的精华液| 亚洲春色另类小说| 九九热视频这里只有精品| 日本久久久久久久久| 国产婷婷色综合av蜜臀av| 国产一区二区欧美日韩| 91禁外国网站| 日本久久久久亚洲中字幕| 国产一区二区三区四区福利| 国内精品免费午夜毛片| 色老头一区二区三区在线观看| 国产97免费视| 7m第一福利500精品视频| 欧美视频专区一二在线观看| 中日韩美女免费视频网址在线观看| 91亚洲国产精品| 91精品国产91久久久久| 久久99国产精品久久久久久久久| 国产精品成人一区二区| 色偷偷9999www| 91情侣偷在线精品国产| 成人欧美一区二区三区在线湿哒哒| 国产成人精品久久亚洲高清不卡| 成人女保姆的销魂服务| 国产欧美精品在线播放| 51久久精品夜色国产麻豆| 亚洲精品第一页| 欧美激情成人在线视频| 亚洲福利视频免费观看| 日韩经典中文字幕在线观看| 一区二区中文字幕| 国产亚洲精品va在线观看| 欧美二区在线播放| 欧美日韩aaaa| 日本伊人精品一区二区三区介绍| 91精品国产自产在线老师啪| 精品亚洲男同gayvideo网站| 亚洲美女精品久久| 国产精品久久久久久久久久久新郎| 97国产成人精品视频| 久久精品视频99| 国产精品视频专区| 清纯唯美亚洲综合| 亚洲毛片在线看| 日韩一区av在线| 成人国产精品日本在线| 日韩经典中文字幕在线观看| 久久精品国产一区二区电影| 欧美视频第一页| 国产成人福利夜色影视| 日韩av综合中文字幕| 欧美国产亚洲视频| 国产精品久久久久久久久粉嫩av| 午夜精品久久久久久99热| 国产亚洲激情视频在线| 亚洲国产欧美一区二区三区同亚洲| 久久久噜久噜久久综合| 国产亚洲成精品久久| 亚洲一区二区中文| 国产精品igao视频| 亚洲国产精品电影| 亚洲第一男人av| 日本一区二区不卡| 精品成人乱色一区二区| 国产手机视频精品| 另类视频在线观看| 91黄色8090| 亚洲免费福利视频| 国产精品久久久久久av下载红粉| 精品中文字幕乱| 国产精品久久色| 亚洲欧美国产精品va在线观看| 久久国产精品久久精品| 日本不卡高字幕在线2019| 中文字幕日韩欧美精品在线观看| 国产精品99导航| 亚洲国产精品嫩草影院久久| 有码中文亚洲精品| 国产亚洲激情在线| 午夜精品在线观看| 久久久最新网址| 欧美亚洲一级片| 最近的2019中文字幕免费一页| 日韩大片免费观看视频播放| 色久欧美在线视频观看| 国产丝袜高跟一区| 最近2019年好看中文字幕视频| 最近2019中文字幕第三页视频| 亚洲精品久久久久中文字幕欢迎你| 91久久国产精品| 亚洲欧美日韩高清| 精品女厕一区二区三区| 日本亚洲精品在线观看| 欧美不卡视频一区发布| 九九热这里只有精品免费看| 亚洲人成网站色ww在线| 丝袜美腿精品国产二区| 成人免费网站在线观看| 亚洲精品视频中文字幕| 日韩不卡中文字幕| 国产九九精品视频| 中文字幕自拍vr一区二区三区| 久久久久久尹人网香蕉| 亚洲性视频网址| 国产精品高潮视频| 北条麻妃在线一区二区| 国产香蕉一区二区三区在线视频| 国产欧美一区二区三区久久人妖| 国产精品久久久久影院日本| 九九九久久久久久| 国产成人精品视频在线观看| 亚洲欧洲国产伦综合| 91国产高清在线| 在线播放精品一区二区三区| 日韩欧美a级成人黄色| 国产精品永久在线| 亚洲一区亚洲二区亚洲三区| 黄色精品在线看| 欧美激情视频网址| 国产小视频91| 亚洲欧美成人精品| 69国产精品成人在线播放|