Iterator的接口定义如下:
Iterator extends Traversable
{
abstract public mixed current ( void )
abstract public scalar key ( void )
abstract public void next ( void )
abstract public void rewind ( void )
abstract public boolean valid ( void )
}
下面是一个简单的例子演示Iterator的使用方法:
<?php
class myIterator implements Iterator {
private $position = 0;
private $array = array(
"firstelement",
"secondelement",
"lastelement",
);
public function __construct() {
$this->position = 0;
}
function rewind() {
var_dump(__METHOD__);
$this->position = 0;
}
function current() {
var_dump(__METHOD__);
return $this->array[$this->position];
}
function key() {
var_dump(__METHOD__);
return $this->position;
}
function next() {
var_dump(__METHOD__);
++$this->position;
}
function valid() {
var_dump(__METHOD__);
return isset($this->array[$this->position]);
}
}
$it = new myIterator;
foreach($it as $key => $value) {
var_dump($key, $value);
echo "<br />";
}
?>
上面的例子会产生如下的输出:
string(18) "myIterator::rewind"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(0)
string(12) "firstelement"
string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(1)
string(13) "secondelement"
string(16) "myIterator::next"
string(17) "myIterator::valid"
string(19) "myIterator::current"
string(15) "myIterator::key"
int(2)
string(11) "lastelement"
string(16) "myIterator::next"
string(17) "myIterator::valid"
原文地址:http://blog.csdn.net/amonest/article/details/6193221
分享到:
相关推荐
要创建一个multi-level array iterator,首先需要实现PHP的`Iterator`接口。这个接口定义了迭代器必须具有的五个方法:`current()`、`key()`、`next()`、`rewind()`和`valid()`。通过这些方法,可以控制遍历数组的...
该库为符合 PSR-4 的文件夹结构创建迭代器,并在其中搜索接口/类的所有实现/扩展。 抽象实现和类本身将被忽略。 用法 $ iterator = new \ Scheb \ ImplementationIterator ( "src/" , "Root\Namespace" , "Some\...
PHP中的Iterator接口提供了一种优雅的方式来处理集合的迭代问题,它允许开发者控制如何遍历集合,同时提供了一组标准化的方法来完成这一任务。通过实现这些方法,可以创建符合PHP迭代器模式的对象,它们能够在使用`...
6. SPL(Standard PHP Library):这是一个内置的PHP库,包含多种数据结构和迭代器,如ArrayIterator、DirectoryIterator等,丰富了PHP的编程能力。 三、集成Web服务器 在Win32环境下,PHP可以与IIS或Apache等Web...
通过这篇详细的介绍,读者应当能够理解PHP中Iterator接口的作用、如何实现该接口以及它与foreach循环之间的关系。掌握这些知识可以帮助开发者更好地控制数据的访问和遍历过程,并能够实现更复杂的迭代逻辑。对于希望...
它继承自Iterator接口,提供了一种方式来包裹其他迭代器,并在迭代过程中添加额外的行为。例如,下面的`MyOuterIterator`类在遍历元素时在其后附加"TEST": ```php class MyOuterIterator extends Iterator...
在PHP中,`Iterator`预定义接口是用于创建自定义迭代器的关键工具,它允许对象像数组一样被遍历。迭代器接口提供了五种抽象方法,这些方法必须在实现该接口的类中定义,以便能够正确地迭代对象的属性或数据。下面将...
- Iterator接口是用于创建自定义迭代器的,它允许对象被像数组一样遍历。这个接口继承自Traversable,包含以下五个抽象方法: - `current()`: 返回当前索引游标指向的元素。 - `key()`: 返回当前元素的键名。 - ...
7. **SPL(Standard PHP Library)**:标准PHP库的加入,为开发者提供了大量内置的数据结构和迭代器,如ArrayIterator、SplStack等,简化了复杂数据处理。 8. **其他改进**:还包括对XPath的支持、XMLWriter的改进...
- SPL(Standard PHP Library):这是PHP的标准扩展库,包含各种数据结构和迭代器,如ArrayIterator、DirectoryIterator等,5.2.10版进一步丰富了SPL的功能。 2. PHP与Discuz!的结合: Discuz!是一款基于PHP和...
Traversable用于检测一个类是否可以使用 foreach 进行遍历,这是一个无法在 PHP 脚本中实现的内部引擎接口,实际编程中我们使用Iterator接口或者IteratorAggregate接口来实现遍历。 接口摘要: Traversable { } ...
`Iterator.php` 文件可能包含了实现自定义迭代器的示例代码,这与本文的主题密切相关,因为`IteratorAggregate`接口就是用来定义自定义迭代器的。不过,具体的实现细节需要查看该文件才能了解。在实际开发中,这样的...
在PHP中,Iterator接口定义了五个方法:valid(), key(), current(), next(), rewind(),这些方法允许访问对象内的元素。 3. SPL提供的迭代器类包括但不限于ArrayIterator、RecursiveIteratorIterator、...
2. 具体迭代器(ConcreteIterator):实现了Iterator接口,提供了具体的遍历实现,包括初始化、移动、检查是否到达结束等方法。 3. 抽象聚合类(Aggregate):定义了创建迭代器的接口,即提供一个方法用于获取迭代...
// 实现Iterator接口的方法 public function rewind() { /* ... */ } public function current() { /* ... */ } public function key() { /* ... */ } public function next() { /* ... */ } public function ...
- 解释器模式(Interpreter):给定一个语言,定义它的文法表示,并提供一个解释器来处理该语言中的句子。 - 迭代器模式(Iterator):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 - 观察者模式...