PHP 迭代器模式

目录
  1. 说明
  2. Iterator接口
  3. 实例

说明

在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素。需要继承迭代器接口。

Iterator接口

1
2
3
4
5
6
7
8
9
10
11
12
Iterator extends Traversable {
// 返回当前元素
abstract public current ( ) : mixed
// 返回当前元素的键
abstract public key ( ) : scalar
// 向前移动到下一个元素
abstract public next ( ) : void
// 返回到迭代器的第一个元素
abstract public rewind ( ) : void
// 检查当前位置是否有效
abstract public valid ( ) : bool
}

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php

class User implements Iterator
{
public $ids;
public $index;

function __construct()
{
$this->ids = [
['id'=>111],
['id'=>112],
['id'=>113]
];
}

function current()
{
$id = $this->ids[$this->index]['id'];
return $id;
}

function key()
{
return $this->index;
}

function next()
{
$this->index++;
}

function rewind()
{
$this->index = 0;
}

function valid()
{
return $this->index < count($this->ids);
}

}


$users = new User();
foreach ($users as $key => $value) {
echo $value."<br>";
}