国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP|PHP實(shí)踐-生成器

xialong / 1331人閱讀

摘要:與標(biāo)準(zhǔn)的迭代器不同,生成器不要求類實(shí)現(xiàn)接口,從而減輕了類的負(fù)擔(dān)。生成器不能完成所有迭代器的操作。如果需要更多功能,例如在數(shù)據(jù)集中執(zhí)行后腿,快進(jìn)或查找操作,最好自己編寫(xiě)類,實(shí)現(xiàn)接口,或者使用標(biāo)準(zhǔn)庫(kù)中某個(gè)原生的迭代器參考

PHP生成器是5.5.0引入的功能。

生成器實(shí)際上就是簡(jiǎn)單的迭代器。

與標(biāo)準(zhǔn)的PHP迭代器不同,生成器不要求類實(shí)現(xiàn)Iterator接口,從而減輕了類的負(fù)擔(dān)。

生成器會(huì)根據(jù)需求計(jì)算產(chǎn)出迭代的值。而標(biāo)準(zhǔn)的PHP迭代器經(jīng)常在內(nèi)存中執(zhí)行迭代操作,這要預(yù)先計(jì)算出數(shù)據(jù)集,性能較低。

如果使用特定的防護(hù)計(jì)算大量數(shù)據(jù),可以使用生成器,即時(shí)計(jì)算并產(chǎn)出后續(xù)值,不占用內(nèi)存。

生成器不能完成所有迭代器的操作。無(wú)法后退,快進(jìn),并且生成器是一次性的,無(wú)法對(duì)此迭代同一個(gè)生成器。

創(chuàng)建

生成器從不返回值,只是產(chǎn)出值。


調(diào)用生成器函數(shù)時(shí),PHP會(huì)反悔一個(gè)屬于Generator類的對(duì)象。這個(gè)對(duì)象是可以foreach迭代的。每次迭代,PHP要求這個(gè)實(shí)例計(jì)算并提供下一個(gè)要迭代的值。

每次產(chǎn)出一個(gè)值,生成器的內(nèi)部狀態(tài)都會(huì)停頓。向生成器請(qǐng)求下一個(gè)值時(shí),內(nèi)部狀態(tài)才會(huì)恢復(fù)。這種停頓-恢復(fù)的狀態(tài)會(huì)一直持續(xù)下去。


使用

上面的這個(gè)方法并沒(méi)有善用內(nèi)存,使用生成器只會(huì)為一個(gè)整數(shù)分配內(nèi)存。


再舉個(gè)例子:使用生成器處理CSV文件


這個(gè)例子中,生成器只會(huì)為CSV文件分配一行內(nèi)存,而不是讀入整個(gè)文件到內(nèi)存。

如果需要更多功能,例如在數(shù)據(jù)集中執(zhí)行后腿,快進(jìn)或查找操作,最好自己編寫(xiě)類,實(shí)現(xiàn)Iterator接口(http://php.net/manual/class.iterator.php),或者使用PHP標(biāo)準(zhǔn)庫(kù)中某個(gè)原生的迭代器(http://php.net/manual/spl.iterators.php)

參考:

Modern PHP

http://bit.ly/ircmaxwell

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/21649.html

相關(guān)文章

  • 記一次 Laravel 應(yīng)用性能調(diào)優(yōu)經(jīng)歷

    摘要:為了一探究竟,于是開(kāi)啟了這次應(yīng)用性能調(diào)優(yōu)之旅。使用即時(shí)編譯器和都能輕輕松松的讓你的應(yīng)用程序在不用做任何修改的情況下,直接提高或者更高的性能。 這是一份事后的總結(jié)。在經(jīng)歷了調(diào)優(yōu)過(guò)程踩的很多坑之后,我們最終完善并實(shí)施了初步的性能測(cè)試方案,通過(guò)真實(shí)的測(cè)試數(shù)據(jù)歸納出了 Laravel 開(kāi)發(fā)過(guò)程中的一些實(shí)踐技巧。 0x00 源起 最近有同事反饋 Laravel 寫(xiě)的應(yīng)用程序響應(yīng)有點(diǎn)慢、20幾個(gè)并...

    warkiz 評(píng)論0 收藏0
  • Laravel入門(mén)及實(shí)踐,快速上手ThinkSNS+二次開(kāi)發(fā)

    摘要:在中,提示符可能是。框架使用來(lái)執(zhí)行安裝及管理依賴。為了能訪問(wèn)網(wǎng)頁(yè),要啟動(dòng)程序服務(wù)器。在大多數(shù)類系統(tǒng)中,包括,命令行提示符是符號(hào)。這兩個(gè)操作分別對(duì)應(yīng)于的和,即創(chuàng)建和讀取。首個(gè)表單要在模板中編寫(xiě)表單,可以使用表單構(gòu)造器。 【摘要】自從ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都說(shuō)技術(shù)門(mén)檻抬高了,其實(shí)你與TS+的距離僅僅只是學(xué)習(xí)一個(gè)新框架而已,所以,我們...

    glumes 評(píng)論0 收藏0
  • 聊聊加密那點(diǎn)事——PHP加密最佳實(shí)踐

    摘要:所謂對(duì)稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點(diǎn)之一。非對(duì)稱加密算法由于對(duì)稱加密在通信加密領(lǐng)域的缺陷,年和提出了非對(duì)稱加密的概念。非對(duì)稱加密,其主要缺點(diǎn)之一就是慢,適合加密少量數(shù)據(jù)。 1. 加密的目的 加密不同于密碼,加密是一個(gè)動(dòng)作或者過(guò)程,其目的就是將一段明文信息(人類或機(jī)器可以直接讀懂的信息)變?yōu)橐欢慰瓷先](méi)有任何意義的字符,必須通過(guò)事先約定的解密規(guī)則才能將...

    lcodecorex 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<