日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

php的闭包函数use的使用

發(fā)布時(shí)間:2023/11/27 生活经验 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php的闭包函数use的使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

PHP在默認(rèn)情況下,匿名函數(shù)不能調(diào)用所在代碼塊的上下文變量,而需要通過(guò)使用use關(guān)鍵字。

function?getMoney() { ??$rmb?= 1; ??$dollar?= 6; ??$func?= function() use?( $rmb?) { ????echo?$rmb; ????echo?$dollar; ??}; ??$func(); } ??? getMoney(); ??? //輸出: //1 //報(bào)錯(cuò),找不到dorllar變量 //可以看到,dollar沒(méi)有在use關(guān)鍵字中聲明,在這個(gè)匿名函數(shù)里也就不能獲取到它,所以開(kāi)發(fā)中要注意這個(gè)問(wèn)題。 //是否可以在匿名函數(shù)中改變上下文的變量,但我發(fā)現(xiàn)是不可以的 function?getMoney() { ??$rmb?= 1; ??$func?= function() use?( $rmb?) { ????echo?$rmb; ????//把$rmb的值加1 ????$rmb++; ??}; ??$func(); ??echo?$rmb; } ??? getMoney(); ??? //輸出: //1 //1 # 原來(lái)use所引用的也只不過(guò)是變量的一個(gè)副本而已。但是我想要完全引用變量,而不是復(fù)制。 # 要達(dá)到這種效果,其實(shí)在變量前加一個(gè) & 符號(hào)就可以了: function?getMoney() { ??$rmb?= 1; ??$func?= function() use?( &$rmb?) { ????echo?$rmb; ????//把$rmb的值加1 ????$rmb++; ??}; ??$func(); ??echo?$rmb; } ??? getMoney(); ??? //輸出: //1 //2 /** 好,這樣匿名函數(shù)就可以引用上下文的變量了。如果將匿名函數(shù)返回給外界,匿名函數(shù)會(huì)保存use所引用的變量,而外界則不能得到這些變量,這樣形成‘閉包'這個(gè)概念可能會(huì)更清晰一些。根據(jù)描述改變一下上面的例子: */ function?getMoneyFunc() { ??$rmb?= 1; ??$func?= function() use?( &$rmb?) { ????echo?$rmb; ????//把$rmb的值加1 ????$rmb++; ??}; ??return?$func; } ??? $getMoney?= getMoneyFunc(); $getMoney(); $getMoney(); $getMoney(); ??? //輸出: //1 //2 //3 ?

轉(zhuǎn)載于:https://www.cnblogs.com/jianzhaojing/p/11284659.html

總結(jié)

以上是生活随笔為你收集整理的php的闭包函数use的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。