class Map implements 'ArrayAccess, 'iterator {
private $map;
public function __construct() {
$this->map = array();
}
/* Iterator interface:
* 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 )
*/
public function current() {
return 'current($this->map);
}
public function key() {
return 'key($this->map);
}
public function next() {
'next($this->map);
}
public function rewind() {
'reset($this->map);
}
public function valid() {
//What should go here?
}
/*so on*/
为了能够在这个结构上foreach
,我必须实现代码注释中指出的接口。除了valid
之外,它们都有明显的功能,我可以使用它们将它们应用于我正在封装的map
。
在Iterator
页面上使用的示例是一个"列表类型",它只是保持它在数组中所处位置的计数。
我应该使用什么作为valid
的实现?
我刚刚回答了我的问题。
我正在寻找文档的链接,我想知道"也许key
…"
空键是没有意义的(即使对PHP),它使用[]
附加操作符和东西。因此,如果key
返回null,则越界。
见http://php.net/manual/en/function.key.php