博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP|PHP实践-生成器
阅读量:7005 次
发布时间:2019-06-27

本文共 586 字,大约阅读时间需要 1 分钟。

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

生成器实际上就是简单的迭代器。

与标准的PHP迭代器不同,生成器不要求类实现Iterator接口,从而减轻了类的负担。

生成器会根据需求计算产出迭代的值。而标准的PHP迭代器经常在内存中执行迭代操作,这要预先计算出数据集,性能较低。

如果使用特定的防护计算大量数据,可以使用生成器,即时计算并产出后续值,不占用内存。

生成器不能完成所有迭代器的操作。无法后退,快进,并且生成器是一次性的,无法对此迭代同一个生成器。

创建

生成器从不返回值,只是产出值。

调用生成器函数时,PHP会反悔一个属于Generator类的对象。这个对象是可以foreach迭代的。每次迭代,PHP要求这个实例计算并提供下一个要迭代的值。

每次产出一个值,生成器的内部状态都会停顿。向生成器请求下一个值时,内部状态才会恢复。这种停顿-恢复的状态会一直持续下去。

使用

上面的这个方法并没有善用内存,使用生成器只会为一个整数分配内存。

再举个例子:使用生成器处理CSV文件

这个例子中,生成器只会为CSV文件分配一行内存,而不是读入整个文件到内存。

如果需要更多功能,例如在数据集中执行后腿,快进或查找操作,最好自己编写类,实现Iterator接口(,或者使用PHP标准库中某个原生的迭代器(

参考:

  1. Modern PHP

转载地址:http://cxytl.baihongyu.com/

你可能感兴趣的文章
Android WebView 总结
查看>>
创建存储过程和函数
查看>>
[zz]Linux下虚拟化技术深入探讨
查看>>
ASP.NET Cache的一些总结
查看>>
类型名称了解typename的双重意义
查看>>
深入理解计算机系统(1.2)---hello world的程序是如何运行的
查看>>
Json与数组
查看>>
Linux System Reinforcement、Intrusion Detection Based On syslog
查看>>
城市三维地下管线管理系统
查看>>
inno setup介绍及官方网站地址
查看>>
ASP 未结束的字符串常量
查看>>
五个项目管理学习笔记.沟通技巧II
查看>>
jquery的$.extend和$.fn.extend作用及区别
查看>>
JAVA--继承
查看>>
.NET完全手动搭建三层B/S架构
查看>>
CentOS下yum使用代理的设置
查看>>
一个C#语法高亮插件
查看>>
深入浅出Java并发包—锁机制(三)
查看>>
线程安全的单例模式
查看>>
软件项目量化管理(CMMI高成熟度)实践经验谈——之项目管理过程策划篇
查看>>