1.Traversable(遍历)接口
作用:检测一个类是否可以使用 foreach 进行遍历的接口。
php代码中不能用。只有内部的PHP类(用C写的类)才可以直接实现Traversable接口
php代码中使用Iterator或IteratorAggregate接口来实现遍历。
这个接口没有任何方法,它的作用仅仅是作为所有可遍历类的基本接口
2.Iterator(迭代器)接口
作用:实现一个类似于指针移动的类,对应其中的5个方法:key(),current(),next(),rewind(),valid();这几个方法名必须是固定的,不能乱写,可多不可少(比如下面的pre方法并不在上述五个里面)
<?php
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,证明这个类的对象是可以进行遍历的
?>
网友评论