php的7个预定义接口之[遍历+迭代]

1.Traversable(遍历)接口

作用:检测一个类是否可以使用 foreach 进行遍历的接口。

php代码中不能用。只有内部的PHP类(用C写的类)才可以直接实现Traversable接口

php代码中使用Iterator或IteratorAggregate接口来实现遍历。

这个接口没有任何方法,它的作用仅仅是作为所有可遍历类的基本接口

2.Iterator(迭代器)接口

作用:实现一个类似于指针移动的类,对应其中的5个方法:key(),current(),next(),rewind(),valid();这几个方法名必须是固定的,不能乱写,可多不可少(比如下面的pre方法并不在上述五个里面)

class subIterator implements Iterator{

    private $key = 0;

    private $arr = ['hello','你好','hi'];

    public function key(){

        return $this->key;

    }

    public function current(){

        return $this->arr[$this->key];

    }

    public function rewind(){

        return $this->key = 0;

    }

    public function next(){

        ++$this->key;

    }

    public function pre(){

        --$this->key;   

    }

    public function valid(){

        return isset($this->arr[$this->key]);

    }

}

$obj = new subIterator;

echo $obj->key();

echo $obj->current();

$obj->next();

echo $obj->current();

$obj->pre();

echo $obj->current();

var_dump($obj instanceOf Traversable); //返回true,证明这个类的对象是可以进行遍历的

?>

你可能感兴趣的:(php的7个预定义接口之[遍历+迭代])