最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
PHP中怎么為匿名函數(shù)指定this

這篇文章給大家介紹PHP中怎么為匿名函數(shù)指定this,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),汝城企業(yè)網(wǎng)站建設(shè),汝城品牌網(wǎng)站建設(shè),網(wǎng)站定制,汝城網(wǎng)站建設(shè)報(bào)價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,汝城網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

 

在PHP中如何為匿名函數(shù)指定this?

在之前的文章中,我們已經(jīng)學(xué)習(xí)過匿名函數(shù)的使用,沒有看過的小伙伴可以進(jìn)入傳送門先去了解下閉包匿名函數(shù)的用法,傳送:還不知道PHP有閉包?那你真OUT了。

關(guān)于閉包匿名函數(shù),在JS中有個很典型的問題就是要給它綁定一個 this 作用域。其實(shí)這個問題在PHP中也是存在的,比如下面這段代碼:

$func = function($say){
    echo $this->name, ':', $say, PHP_EOL;
};
$func('good'); // Fatal error: Uncaught Error: Using $this when not in object context 
 

在這個匿名函數(shù)中,我們使用了 \$this->name 來獲取當(dāng)前作用域下的 $name 屬性,可是,這個 $this 是誰呢?我們并沒有定義它,所以這里會直接報(bào)錯。錯誤信息是:使用了 $this 但是沒有對象上下文,也就是說沒有指定 $this 引用的作用域。

 

bindTo() 方法綁定 $this

好吧,那么我們就給它一個作用域,和 JS 一樣,使用一個 bindTo() 方法即可。

$func1 = $func->bindTo($lily, 'Lily');
// $func1 = $func->bindTo($lily, Lily::class);
// $func1 = $func->bindTo($lily, $lily);
$func1('cool');
 

這回就可以正常輸出了。bindTo() 方法是復(fù)制一個當(dāng)前的閉包對象,然后給它綁定 $this 作用域和類作用域。其中, $lily 參數(shù)是一個 object $newthis 參數(shù),也就是給這個復(fù)制出來的匿名函數(shù)指定 $this 。而第二個參數(shù) 'Lily' 則是綁定一個新的 類作用域 ,它代表一個類型、決定在這個匿名函數(shù)中能夠調(diào)用哪些 私有 和 受保護(hù) 的方法,上例中給出的三種方式都可以用來定義這個參數(shù)。如果不給這個參數(shù),那么我們就不能訪問這個 private 的 $name 屬性了:

$func2 = $func->bindTo($lily);
$func2('cool2'); // Fatal error: Uncaught Error: Cannot access private property Lily::$name
   

call() 方法綁定 $this

在PHP7以后,PHP新增加了 call() 方法來進(jìn)行匿名函數(shù)的 $this 綁定,我們來看看它和 bindTo() 方法有哪些區(qū)別。

$func->call($lily, 'well'); // Lily:well


關(guān)于PHP中怎么為匿名函數(shù)指定this就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


文章標(biāo)題:PHP中怎么為匿名函數(shù)指定this
本文地址:http://fisionsoft.com.cn/article/pjcegd.html