迭代器

可帮助构造特定的对象,那些对象能够提供单一标准接口循环或迭代任何类型的可计数数据。(不是特别常用,在PHP中)

使用场景

  1. 访问一个聚合对象的内容而无需暴露它的内部表示。
  2. 支持对聚合对象的多种遍历。
  3. 为遍历不同的聚合结构提供一个统一的接口(即,多态迭代)。

代码设计

 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
<?php
 
//迭代器:可帮助构造特定的对象,那些对象能够提供单一标准接口循环或迭代任何类型的可计数数据
class MyIterator implements Iterator
{
 
    private $var = array();
 
    public function __construct($array)
    {
        $this->var = $array;
    }
 
    public function rewind()
    {
        reset($this->var);
    }
 
    public function current()
    {
        $var = current($this->var);
        return $var;
    }
 
    public function valid()
    {
        $var = $this->current() !== false;
        return $var;
    }
 
    public function next()
    {
        $var = next($this->var);
        return $var;
    }
 
    public function key()
    {
        $var = key($this->var);
        return $var;
    }
}
 
$values = array('a', 'b', 'c');
$it = new MyIterator($values);
foreach ($it as $a => $b) {
    print "$a: $b" . PHP_EOL;
}