什么是PHP对象迭代
问题描述:
谁能解释什么是对象迭代和如何代码工作?什么是PHP对象迭代
class MyIterator implements Iterator{
private $var = array();
public function __construct($array){
if (is_array($array)) {
$this->var = $array;
}
}
public function rewind() {
echo "rewinding
";
reset($this->var);
}
public function key() {
$var = key($this->var);
echo "key: $var
";
return $var;
}
public function next() {
$var = next($this->var);
echo "next: $var
";
return $var;
}
public function valid() {
$var = $this->current() !== false;
echo "valid: {$var}
";
return $var;
}
public function current() {
$var = current($this->var);
echo "current: $var
";
return $var;
}
}
$values = array(1,2,3);
$it = new MyIterator($values);
foreach ($it as $a => $b) {
print "$a: $b
";
}
答
Iterator接口可能受Java Iterators的启发。它提供了一个通用接口,可以使用foreach
构造不断迭代项目列表。
你的代码定义了实现此接口的类。它基本上提供了与本机支持的数组相同的功能,但添加了一些回显语句。
为什么要使用迭代器?
的迭代器的优点是,它提供了一个高层次的抽象接口,所以调用它不需要太在乎到底是怎么回事的代码。同时,它允许您以块的形式处理大型数据源(从db读取行,从文件读取行),而无需一次将所有内容加载到内存中。
大问题,代码是从官方php.net手册[对象迭代(http://php.net/manual/en/language.oop5.iterations.php),我不明白这一点,以及。作者不在乎解释它的作用和原因。 – 2017-02-07 10:09:30