Zend_Db_Table_Rowsetを拡張する2

以前、Zend_Db_Table_Rowsetを拡張するという記事をあげましたが、
不備というか使いづらい点があったので修正しました。

deleteト等を行う前に、foreach や、更新を行っていると、
rowset内カウンタの関係で、 validでfalseが返ってきたので、
処理の前後に、rewindでカウンタを0に戻す処理を追加しました。

class MyRowset extends Zend_Db_Table_Rowset_Abstract
{
  public function delete()
  {
    $this->rewind();

    if (!$this->valid()) { return; }
    foreach ($this as &$row) { $row->delete(); }
  }

  public function save()
  {
    $this->rewind();

    if (!$this->valid()) { return; }
    foreach ($this as &$row) { $row->save(); }

    $this->rewind();
  }

  public function __set($key, $value)
  {
    $this->rewind();

    if (!$this->valid()) { return; }
    foreach ($this as &$row) { $row->{$key} = $value; }

    $this->rewind();
  }
}