今日、このPHP: Iteratorsページに出くわしましたが、なぜこれらのクラスが必要なのか疑問に思っています。それらが目的を果たしていると仮定したいと思います。そうでなければ、それらはPHPにはありません。これらを行うための非常に簡単な方法がすでにあるのに、私はそのようなアイテムの利点を見るのに苦労しています.
PHP は、より立派なオブジェクト指向プログラミング言語であるという誤りを犯していますか? それとも、これを行うことには本当に利点がありますか?
これを行うには 2 つの方法があることを示す良い例が、 ArrayIterator に関する PHP コメントで見つかりました。
<?php
$fruits = array(
"apple" => "yummy",
"orange" => "ah ya, nice",
"grape" => "wow, I love it!",
"plum" => "nah, not me"
);
$obj = new ArrayObject( $fruits );
$it = $obj->getIterator();
// How many items are we iterating over?
echo "Iterating over: " . $obj->count() . " values\n";
// Iterate over the values in the ArrayObject:
while( $it->valid() ) {
echo $it->key() . "=" . $it->current() . "\n";
$it->next();
}
// The good thing here is that it can be iterated with foreach loop
foreach ($it as $key=>$val)
echo $key.":".$val."\n";
/* Outputs something like */
Iterating over: 4 values
apple=yummy
orange=ah ya, nice
grape=wow, I love it!
plum=nah, not me
?>