2

如果我想实现 seek() 来完成 SeekableIterator 接口,如果搜索的位置无效,我是否应该在内部恢复到旧位置?像这样:

public function seek( $position )
{
    $oldPosition = $this->_position;
    $this->_position = $position;
    if( !$this->valid() )
    {
        $this->_position = $oldPosition;
        throw new OutOfBoundsException( 'Invalid seek position (' . $position . ')' );
    }
}
4

2 回答 2

3

如果您使用 php.net接口参考的示例实现作为指导,那么不,您不应该“恢复”到原始位置,即使提供的目标位置无效。

于 2009-09-07T00:14:00.523 回答
0

根据SPL 文档中的示例代码,您仍然应该更改位置。

于 2009-09-07T00:14:41.083 回答