3

友達。これらのイテレータについては、すでに多くの質問があります。私は何かを読みました、そして私は初心者ではありません...しかし、私の心はこれに行き詰まっています. 実際にイテレータをどのように使用するかを理解するのを手伝ってください。

データベースからインスタンスを選択できる ORM オブジェクトがあるとします。そして、1 つのインスタンスにはフィールドが含まれており、挿入、uodate などを行うことができます。通常どおりです。あるタイプのすべてのオブジェクトを繰り返し処理したいのですが、オブジェクトがたくさんある可能性があるため、「ページ」ごとに選択することを好みます。私のコード:

$limit = 100;
$offset = 0;
do
{
  $recs = $orm->select($filter, $sorting, $limit , $offset);
  $offset += $limit;
  foreach ($recs as $rec)
  {
    // doing something with record
  }
}
while (count($recs) == $limit);

イテレータパラダイムがここに適していると思いますが、この場合、または基本 SPL クラスで実装するのに適したインターフェイスはどれですか?

UPDATE 理想的には、イテレータを使用した上記のコードは次のようになります。

$iterator = new ORMPagedIterator($ormobject, $filter, $sorting);
foreach ($iterator as $rec)
{
  // do something with record
}

たとえば、ページごとの動作はすべてイテレータ内にあります。

4

1 に答える 1