PHP -隐藏映射的迭代器,' valid '应该做什么?


PHP - Iterator hiding a map, what should `valid` do?

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