Tach!
Der ArrayIterator ist nach Erzeugung valid, ohne rewind. Nach Erstellung des CallbackFilterIterators ist der ArrayIterator immer noch valid. Aber der CallbackFilterIterator erst nach rewind.
Das kann ja sein, dass der Array-Iterator-Constructor die Default-Werte schon passend setzt oder sie so vordefiniert sind. Gab es eine Garantie, dass das so sei?
Das rewind() muss jedenfalls zu Beginn ausgeführt werden. So ist es vorgesehen. Wenn dabei nichts passiert, weil die Default-Werte bereits so sind, dann ist das eher so zu betrachten, wie eine gewünschte Sortierung einer Datenbank-Abfrage ohne ORDER BY. Passt zufällig, ist aber nicht garantiert.
Zwei SPL Iteratoren sollten soch doch gleich verhalten. Doch ein Bug?
Seh ich nicht so. Sie verhalten sich ja gleich, wenn du das rewind() zur Initialisierung ausführst. Das gehört dazu, wenn man next() zu Fuß verwendet.
dedlfix.