宝哥软件园

PHP中迭代器迭代对象属性的详细说明

编辑:宝哥软件园 来源:互联网 时间:2021-08-26

前言

foreach的用法与前面的数组遍历相同,只是这里遍历的键是属性名,值是属性值。当在类外部遍历时,您只能遍历公共属性,因为其他所有内容都是受保护的,并且在类外部不可见。

class HardDiskDrive { public $ brand;public $ color公共$ cpupublic $ workState受保护的$ memory受保护的$硬盘;私人$价格;public function _ _ construct($ brand,$color,$cpu,$workState,$memory,$hardDisk,$ price){ $ this-brand=$ brand;$ this-color=$ color;$ this-CPU=$ CPU;$ this-workState=$ workState;$ this-memory=$ memory;$ this-hard disk=$ hard disk;$ this-price=$ price;}} $硬盘=新硬盘('希捷','白银','腾讯','嗯',' 1t ','硬盘',' $ 456 ');foreach($ hardiskdrive as $ property=$ value){ var _ dump($ property,$ value);echo“br”;}输出结果为:

字符串(5)“品牌”字符串(6)“希捷”字符串(5)“颜色”字符串(6)“银色”字符串(3)“中央处理器”字符串(7)“腾讯”字符串(9)“工作状态”字符串(4)“嗯”

从输出结果中,我们还可以看到常规遍历无法访问受保护的属性。

如果我们想要遍历对象的所有属性,我们需要控制foreach的行为,为类对象提供更多的函数,并从Iterator的接口:继承

这个接口实现foreach需要的每一个操作。foreach的执行流程如下:

看一下这个传说,foreach有几个关键步骤:五。

迭代器迭代器所需的五种方法用于帮助foreach在遍历对象时实现五个关键步骤:

foreach遍历对象时,如果发现对象实现了Ierator接口,则不是foreach在执行上述五个步骤时的默认行为,而是可以调用对象对应的方法。

示例代码:

Team类实现迭代器{//private $ name=' itbsl ';//private $ age=25;//private $hobby='钓鱼';private $info=['itbsl ',25岁,'钓鱼'];公共函数rewind(){ reset($ this-info);//重置数组指针} public function valid() {//为空表示无元素,返回false //不为空返回true!is _ null(key($ this-info));} public function current(){ return current($ this-info);} public function key(){ return key($ this-info);} public function next(){ return next($ this-info);} } $ Team=new Team();foreach($ team as $ property=$ value){ var _ dump($ property,$ value);echo“br”;}摘要

以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。谢谢你的支持。

更多资讯
游戏推荐
更多+