91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中怎么為匿名函數指定this

發布時間:2021-07-14 13:53:45 來源:億速云 閱讀:144 作者:Leah 欄目:大數據

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

 

在PHP中如何為匿名函數指定this?

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

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

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

在這個匿名函數中,我們使用了 \$this->name 來獲取當前作用域下的 $name 屬性,可是,這個 $this 是誰呢?我們并沒有定義它,所以這里會直接報錯。錯誤信息是:使用了 $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() 方法是復制一個當前的閉包對象,然后給它綁定 $this 作用域和類作用域。其中, $lily 參數是一個 object $newthis 參數,也就是給這個復制出來的匿名函數指定 $this 。而第二個參數 'Lily' 則是綁定一個新的 類作用域 ,它代表一個類型、決定在這個匿名函數中能夠調用哪些 私有 和 受保護 的方法,上例中給出的三種方式都可以用來定義這個參數。如果不給這個參數,那么我們就不能訪問這個 private 的 $name 屬性了:

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

call() 方法綁定 $this

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

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


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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汉阴县| 离岛区| 恩施市| 碌曲县| 青神县| 德庆县| 星座| 临夏市| 鹤壁市| 大方县| 穆棱市| 巫溪县| 顺义区| 常熟市| 蓝田县| 尚志市| 峡江县| 山东省| 雅安市| 眉山市| 宣恩县| 晋城| 基隆市| 贡嘎县| 兴业县| 临朐县| 金华市| 平陆县| 双流县| 湖州市| 永寿县| 陈巴尔虎旗| 祁连县| 崇明县| 大足县| 湾仔区| 莱州市| 什邡市| 镇安县| 黔西| 淄博市|