PHP Iterator 100 本ノック IteratorIterator
Traversable なものなら何でもイテレータになるとかいうやつ.
そもそも,Iterator って以外と実装しないといけないメソッドが多くて,状態の管理がめんどくさい.
それをサボる方法として,IteratorAggregate の getIterater で yield するっていうのよくやるんだけど,IteratorIterator もなかなかよかった.
code:php
<?php
class UpperIterator extends IteratorIterator
{
public function current(): string
{
return strtoupper(parent::current());
}
}
$uppers = new UpperIterator(new ArrayIterator($items));
foreach($uppers as $item) {
echo "$item\n";
}
出力は以下の通り
code:shell
APPLE
BANANA
ORANGE
STRAWBERRY
そもそも ArrayIterator が便利説ある