我正在尝试重构一个大型的旧项目,我注意到的一件事是一系列不同的迭代器实现:
while($iterator->moveNext()) {
$item = $iterator->current();
// do something with $item;
}
for($iterator = getIterator(), $iterator->HasNext()) {
$item = $iterator->Next();
// do something with $item
}
while($item = $iterator->fetch()) {
// do something with item
}
甚至是StandardPHPLibrary (SPL)迭代器,它允许
foreach($iterator as $item) {
// do something with $item
}
拥有这么多不同的迭代器(使用不同的方法循环集合)似乎是一种强烈的代码气味,我倾向于将所有内容重构为 SPL。Iterator 的这些实现是否有令人信服的优势,还是纯粹是个人喜好问题?