Zend_Db_Table_Rowsetを拡張する2

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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();
  }
}