前言
foreach用法和之前的数组遍历是一样的,只不过这里遍历的key是属性名,value是属性值。在类外部遍历时,只能遍历到public属性的,因为其它的都是受保护的,类外部不可见。
class harddiskdrive { public $brand; public $color; public $cpu; public $workstate; protected $memory; protected $harddisk; private $price; public function __construct($brand, $color, $cpu, $workstate, $memory, $harddisk, $price) { $this->brand = $brand; $this->color = $color; $this->cpu = $cpu; $this->workstate = $workstate; $this->memory = $memo首都师大ry; $this->harddisk = $harddisk; $this->price = $price; }}$harddiskdrive = new harddiskdrive('希捷', 'silver', 'tencent', 'wbashingell', '1t', 'hard', '$456');foreach ($harddiskdrive as $property => $value) { var_dump($property, $value); echo '<br>';}
输出结果为:
string(5) “brand” string(6) “希捷”
string(5) “color” string(6) “silver”
string(3) “cpu” string(7) “tencent”
string(9) “workstate” string(4) “well”
通过输出结果我们也可以看得出来常规遍历是无法访问受保护的属性的。
如果我们想遍历出对象的所有属性,就需要控制foreac报考大专h的行为,就需要给类对象,提供更多的功能,需要继承自iterator的接口:
该接口,实现了foreach需要的每个操作。foreach的执行流程如下图:
看图例中,foreach中有几个关键步骤:5个。
而iterator迭代器中所要求的实现的5个方法,就是用来帮助foreach,实现在遍历对象时的5个关键步骤:
当foreach去遍历对象时, 如果发现对象实现了ierator接口, 则执行以上5个步骤时, 不是foreach的默认行为, 而是调用对象的对应方法即可:
示例代码:
class team implements iterator { //private $name = 'itbsl'; tan120//private $age = 25; //private $hobby = 'fishing'; private $info = ['itbsl', 25, 'fishing']; public function rewind() { ret($this->info); //重置数组指针 } public function valid() { //如果为null,表示没有元素,返回fal //如果不为null,返回true return !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>';}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对www.887551.com的支持。
本文发布于:2023-04-07 09:19:19,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/53cf84c010ec6fefc616d47a6325aafa.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP中的Iterator迭代对象属性详解.doc
本文 PDF 下载地址:PHP中的Iterator迭代对象属性详解.pdf
留言与评论(共有 0 条评论) |