迭代器設計模式可幫助構造特定的對象,那些對象可以提供單一標準接口循環或迭代任何類型的可計數數據。
使用場景:
1.訪問一個聚合對象的內容而無需暴露它的內部表示。
2.支持對聚合對象的多種遍歷。
3.爲遍歷不一樣的聚合結構提供一個統一的接口(即,多態迭代)。
/**
* 迭代器模式
*
* 提供一個方法順序訪問一聚合對象中的各個元素,而又不暴露對象的內部表示
*/
interface IfIterator
{
public function next();
public function first();
public function current();
public function isDone();
}
class SomeIterator implements IfIterator
{
private $_arr=array();
public function __construct($arr)
{
$this->_arr =$arr;
}
public function first()
{
return $this->_arr[0];
}
public function current()
{
return current($this->_arr);
}
public function next()
{
return next($this->_arr);
}
public function isDone()
{
}
}
$objSomeIterator=new SomeIterator(array(1,2,3,4,6,7));
echo $objSomeIterator->first(),"<br/>";//1
echo $objSomeIterator->next(),"<br/>";//2
echo $objSomeIterator->current(),"<br/>";//2
echo $objSomeIterator->next(),"<br/>";//3
echo $objSomeIterator->current(),"<br/>";//3