亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

發布時間:2021-04-07 09:28:39 來源:億速云 閱讀:128 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關在PHP中怎么為匿名函數指定this,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

關于閉包匿名函數,在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 引用的作用域。

1.bindTo() 方法綁定 $this

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

這回就可以正常輸出了。 bindTo() 方法是復制一個當前的閉包對象,然后給它綁定 $this 作用域和類作用域。

  • $lily 參數是一個 object $newthis 參數,也就是給這個復制出來的匿名函數指定 $this

  • 'Lily' 則是綁定一個新的 類作用域 ,它代表一個類型、決定在這個匿名函數中能夠調用哪些 私有 和 受保護 的方法

如果不給這個參數,那么我們就不能訪問這個 private$name 屬性了:

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

2.call() 方法綁定 $this

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

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

向AI問一下細節

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

AI

郑州市| 沈丘县| 饶河县| 临泽县| 广汉市| 卢湾区| 娱乐| 安仁县| 河北区| 贺兰县| 灌云县| 历史| 龙泉市| 宣威市| 永年县| 海阳市| 阳东县| 嘉黎县| 剑川县| 天水市| 宝鸡市| 隆子县| 越西县| 雅江县| 广汉市| 叙永县| 泗洪县| 南汇区| 玉屏| 江川县| 龙门县| 仙游县| 昔阳县| 麻栗坡县| 南澳县| 建平县| 嘉峪关市| 山东省| 咸阳市| 昌平区| 宜丰县|