朋友。我知道,这些迭代器已经有很多问题了。 我读过一些东西,我不是初学者...但我的思想有点卡住了。请帮助我理解我在实践中如何使用迭代器。使用PHP迭代器
假设,我有一个ORM对象可以从数据库中选择实例。和一个实例包含字段,并可以插入,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
}
例如所有那些逐页行为都在迭代器中。
您可能想详细说明您的场景。我不明白你的意思是“我喜欢按页面选择它们”。此外,查看http://stackoverflow.com/questions/1957133/php-spl-reference-documentation各种SPL相关资源。 – Gordon
“通过页面”的意思是“通过某些部分”,而不是“一个请求中的所有”。其实,现在我没有太多时间去阅读大量的文档,所以我希望得到一个好的建议。 – dmitry
AFAIK通常在服务器上提取更多数据比在同一查询中运行更多次更容易 – max4ever