摘要:與標準的迭代器不同,生成器不要求類實現(xiàn)接口,從而減輕了類的負擔。生成器不能完成所有迭代器的操作。如果需要更多功能,例如在數(shù)據(jù)集中執(zhí)行后腿,快進或查找操作,最好自己編寫類,實現(xiàn)接口,或者使用標準庫中某個原生的迭代器參考
PHP生成器是5.5.0引入的功能。
生成器實際上就是簡單的迭代器。
與標準的PHP迭代器不同,生成器不要求類實現(xiàn)Iterator接口,從而減輕了類的負擔。
生成器會根據(jù)需求計算產(chǎn)出迭代的值。而標準的PHP迭代器經(jīng)常在內(nèi)存中執(zhí)行迭代操作,這要預先計算出數(shù)據(jù)集,性能較低。
如果使用特定的防護計算大量數(shù)據(jù),可以使用生成器,即時計算并產(chǎn)出后續(xù)值,不占用內(nèi)存。
創(chuàng)建生成器不能完成所有迭代器的操作。無法后退,快進,并且生成器是一次性的,無法對此迭代同一個生成器。
生成器從不返回值,只是產(chǎn)出值。
調(diào)用生成器函數(shù)時,PHP會反悔一個屬于Generator類的對象。這個對象是可以foreach迭代的。每次迭代,PHP要求這個實例計算并提供下一個要迭代的值。
每次產(chǎn)出一個值,生成器的內(nèi)部狀態(tài)都會停頓。向生成器請求下一個值時,內(nèi)部狀態(tài)才會恢復。這種停頓-恢復的狀態(tài)會一直持續(xù)下去。
使用上面的這個方法并沒有善用內(nèi)存,使用生成器只會為一個整數(shù)分配內(nèi)存。
再舉個例子:使用生成器處理CSV文件
這個例子中,生成器只會為CSV文件分配一行內(nèi)存,而不是讀入整個文件到內(nèi)存。
如果需要更多功能,例如在數(shù)據(jù)集中執(zhí)行后腿,快進或查找操作,最好自己編寫類,實現(xiàn)Iterator接口(http://php.net/manual/class.iterator.php),或者使用PHP標準庫中某個原生的迭代器(http://php.net/manual/spl.iterators.php)
參考:
Modern PHP
http://bit.ly/ircmaxwell
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/21649.html
摘要:為了一探究竟,于是開啟了這次應用性能調(diào)優(yōu)之旅。使用即時編譯器和都能輕輕松松的讓你的應用程序在不用做任何修改的情況下,直接提高或者更高的性能。 這是一份事后的總結(jié)。在經(jīng)歷了調(diào)優(yōu)過程踩的很多坑之后,我們最終完善并實施了初步的性能測試方案,通過真實的測試數(shù)據(jù)歸納出了 Laravel 開發(fā)過程中的一些實踐技巧。 0x00 源起 最近有同事反饋 Laravel 寫的應用程序響應有點慢、20幾個并...
摘要:在中,提示符可能是??蚣苁褂脕韴?zhí)行安裝及管理依賴。為了能訪問網(wǎng)頁,要啟動程序服務器。在大多數(shù)類系統(tǒng)中,包括,命令行提示符是符號。這兩個操作分別對應于的和,即創(chuàng)建和讀取。首個表單要在模板中編寫表單,可以使用表單構(gòu)造器。 【摘要】自從ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都說技術(shù)門檻抬高了,其實你與TS+的距離僅僅只是學習一個新框架而已,所以,我們...
摘要:所謂對稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點之一。非對稱加密算法由于對稱加密在通信加密領(lǐng)域的缺陷,年和提出了非對稱加密的概念。非對稱加密,其主要缺點之一就是慢,適合加密少量數(shù)據(jù)。 1. 加密的目的 加密不同于密碼,加密是一個動作或者過程,其目的就是將一段明文信息(人類或機器可以直接讀懂的信息)變?yōu)橐欢慰瓷先]有任何意義的字符,必須通過事先約定的解密規(guī)則才能將...
閱讀 3561·2021-11-19 09:40
閱讀 1576·2021-10-13 09:41
閱讀 2785·2021-09-29 09:35
閱讀 2779·2021-09-23 11:21
閱讀 1812·2021-09-09 11:56
閱讀 922·2019-08-30 15:53
閱讀 901·2019-08-30 15:52
閱讀 660·2019-08-30 12:47