php中如何使用匿名函數(shù),很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)建站,為您提供成都網(wǎng)站建設(shè)、網(wǎng)站制作公司、網(wǎng)站營銷推廣、網(wǎng)站開發(fā)設(shè)計(jì),對(duì)服務(wù)宣傳片制作等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。創(chuàng)新互聯(lián)建站網(wǎng)站建設(shè)公司成立于2013年,提供專業(yè)網(wǎng)站制作報(bào)價(jià)服務(wù),我們深知市場的競爭激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!
匿名函數(shù)的提出
在匿名函數(shù)出現(xiàn)之前,所有的函數(shù)都需要先命名才能使用
有的時(shí)候函數(shù)可能只需要使用一次,這時(shí)候使用匿名函數(shù)會(huì)使得代碼更加簡潔直觀,同時(shí)也避免了函數(shù)在其他地方被使用
(免費(fèi)學(xué)習(xí)視頻教程分享:php視頻教程)
匿名函數(shù)的定義與使用
PHP 將閉包和匿名函數(shù)視為同等概念(本文統(tǒng)稱為匿名函數(shù)),本質(zhì)上都是偽裝成函數(shù)的對(duì)象。
匿名函數(shù)的本質(zhì)是對(duì)象,因此跟對(duì)象一樣可將匿名函數(shù)賦值給某一變量
所有的匿名函數(shù)都是 Closure 對(duì)象的實(shí)例
對(duì)象并沒有什么父作用域可言,所以需要使用 use 來手動(dòng)聲明使用的變量
如果要讓匿名函數(shù)中的變量生效,需要使用引用傳值
從 PHP 5.4 開始,在類里面使用匿名函數(shù)時(shí),匿名函數(shù)的 $this 將自動(dòng)綁定到當(dāng)前類
如果不想讓自動(dòng)綁定生效,可使用靜態(tài)匿名函數(shù)
匿名函數(shù)的本質(zhì)
匿名函數(shù)的本質(zhì)是 Closure 對(duì)象,包括了以下五個(gè)方法
__construct - 防止匿名函數(shù)被實(shí)例化
Closure::bindTo - 復(fù)制當(dāng)前匿名函數(shù)對(duì)象,綁定指定的 $this 對(duì)象和類作用域。通俗的說,就是手動(dòng)將匿名函數(shù)與指定對(duì)象綁定,利用這點(diǎn),可以為擴(kuò)展對(duì)象的功能。
Closure::bind - bindTo 方法的靜態(tài)版本,有兩種用法:
用法一:實(shí)現(xiàn)與 bindTo 方法同樣的效果
用法二:將匿名函數(shù)與類(而不是對(duì)象)綁定,記得要將第二個(gè)參數(shù)設(shè)置為 null
call - PHP 7 新增的 call 方法可以實(shí)現(xiàn)綁定并調(diào)用匿名函數(shù),除了語法更加簡潔外,性能也更高
fromCallable - 將給定的 callable 函數(shù)轉(zhuǎn)化成匿名函數(shù)
fromCallable 等價(jià)于
這里有一點(diǎn)需要特別注意的是,無論是 fromCallable 轉(zhuǎn)化成的閉包,還是使用反射得到的閉包,在使用 bindTo 時(shí),如果第二個(gè)參數(shù)指定綁定類,會(huì)報(bào)錯(cuò)
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。
當(dāng)前題目:php中如何使用匿名函數(shù)
當(dāng)前地址:http://www.chinadenli.net/article26/ieosjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、電子商務(wù)、品牌網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站改版、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)