Stefan+ (Stefan Froehlich)
2022-03-14 10:57:50 UTC
Ich habe da eine Collection, die implementiert \Iterator und für
ausgewählte Anwendungsfälle auch (davon abgeleitet)
\RecursiveIterator.
\Iterator ist klassisch implementiert; die Klasse enthält ein Array,
auf das werden current(), next() etc. angewendet. Nun reicht das
leider nicht immer aus, da gelegentlich verschachtelt iteriert wird,
was wg. des Array-Pointers nicht funktioniert.
Nötig wäre wohl die Implementierung von \IteratorAggregate, damit
foreach() den dort erstellten Iterator statt des Array-Pointers
verwendet. Das geht aber nicht, weil \IteratorAggregate ebenso wie
\RecursiveIterator eine Erweiterung von \Iterator darstellt, was wg.
Mehrfachvererbung nicht sein darf.
Ich behelfe mir damit, $object->getIterator() zu verwenden, wenn
iteriert werden soll, aber schön ist das nicht - ich vergesse
gelegentlich darauf, der Unterschied fällt erst auf, wenn
verschachtelt iteriert wird, und selbst dann wird kein Fehler
geworfen, sondern einfach ein falsches Ergebnis produziert.
Komme ich irgendwie drumherum, oder habe ich einfach Pech gehabt?
Servus,
Stefan
ausgewählte Anwendungsfälle auch (davon abgeleitet)
\RecursiveIterator.
\Iterator ist klassisch implementiert; die Klasse enthält ein Array,
auf das werden current(), next() etc. angewendet. Nun reicht das
leider nicht immer aus, da gelegentlich verschachtelt iteriert wird,
was wg. des Array-Pointers nicht funktioniert.
Nötig wäre wohl die Implementierung von \IteratorAggregate, damit
foreach() den dort erstellten Iterator statt des Array-Pointers
verwendet. Das geht aber nicht, weil \IteratorAggregate ebenso wie
\RecursiveIterator eine Erweiterung von \Iterator darstellt, was wg.
Mehrfachvererbung nicht sein darf.
Ich behelfe mir damit, $object->getIterator() zu verwenden, wenn
iteriert werden soll, aber schön ist das nicht - ich vergesse
gelegentlich darauf, der Unterschied fällt erst auf, wenn
verschachtelt iteriert wird, und selbst dann wird kein Fehler
geworfen, sondern einfach ein falsches Ergebnis produziert.
Komme ich irgendwie drumherum, oder habe ich einfach Pech gehabt?
Servus,
Stefan
--
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike
Wolke Nummer sieben zum verlieben. Mit Stefan. Ein traumhaftes Vergnügen!
(Sloganizer)
http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich
Offizieller Erstbesucher(TM) von mmeike
Wolke Nummer sieben zum verlieben. Mit Stefan. Ein traumhaftes Vergnügen!
(Sloganizer)