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

溫馨提示×

溫馨提示×

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

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

在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

柳江县| 罗山县| 神池县| 衡东县| 婺源县| 诸暨市| 桦川县| 文水县| 区。| 渑池县| 图们市| 大丰市| 天镇县| 江川县| 平和县| 仲巴县| 永春县| 边坝县| 包头市| 鹤壁市| 乌恰县| 延庆县| 临清市| 衡东县| 北碚区| 天等县| 红安县| 新龙县| 荔浦县| 治县。| 五河县| 明星| 会理县| 蕉岭县| 抚顺县| 城步| 千阳县| 永泰县| 宜兰市| 南陵县| 金堂县|