Iterátor + RecursiveIterator inicializáslása
Sziasztok!
Csináltam egy classt ami megvalósítja az Iteratort ÉS A RecursiveIteratort.
A rekurzívnál ésszerű, hogy az iterálni kívánt rész szülő elemét adjuk meg az indításhoz, vegyünk például egy könyvtár struktúrát (Nem könyvtárakon dolgozok!):
Ha $cucc = new ProjectIterator("a") kóddal indítok, akkor logikusan az alma, korte, szilva elemekre vagyok kíváncsi. Illetve a kérdésem pont az, hogy miért?? Az ITERATOR maga, az teljesen lineáris adatokon is iterálhat, nem? Akkor viszont nincs egy "a" ami parent lehetne.
$list = array('alma','korte','szilva');
foreach($list as $elem)
Itt az iterátornak nem volt egy PARENT, tehát ha a ProjectIteratorom lenne ilyen "egy dimenzios", akkor az "a"-val inicializálás lehetetlen.
Viszont, ha a RecursiveIteratort is megvalósítja az osztály, akkor meg az értelmetlen, hogy mondjuk "alma"-val inicializáljam, ha az "alma" "korte" "szilva" sorozaton akarok iterálni.
Először megírtam úgy, hogy "a"-val inicializál, de aztán mikor láttam, hogy néha sima array('alma','korte','szilva') szerű "lista" is lehet benne az adat, akkor átírtam, hogy a lista ELSŐ ELEMÉVEL kell inicializálni, tehát
$cucc = new ProjectIterator("a") csak az a-t adja vissza, vagy ha lenne b/ akkor az is.
$cucc = new ProjectIterator("alma") adja vissza a 3 gyümölcsöt, ha nem rekurzívan hívod.
De így meg az a gond, hogy honnan tudná valaki, hogy mi az első elem az adott szinten ahol listázni akarsz. Az "a" mint parent az 100%, de az "alma" mint első elem, kevsébé...
Nem tudom érteni fogja e valaki a kérdést, mert pont az a baj, hogy már én sem értem.
Parenttel vagy első elemmel való inicializálásra kell megírni az iteratorokat? (Iterator ÉS RecursiveIterator esetén)
Ha a második, akkor hogy oldod meg ha sosincs egy parent, amin belül iterálsz? Jaaa, akkor lehet, hogy csak "new ProjectIterator()" és az menne a lineáris tömbön??
*g*
1000 Köszi,
Lion/KMP
ui: mindenesetre addig visszaírom parentesre...
■ Csináltam egy classt ami megvalósítja az Iteratort ÉS A RecursiveIteratort.
A rekurzívnál ésszerű, hogy az iterálni kívánt rész szülő elemét adjuk meg az indításhoz, vegyünk például egy könyvtár struktúrát (Nem könyvtárakon dolgozok!):
a/alma
a/alma/starking
a/alma/golden
a/korte
a/szilva
a/alma/starking
a/alma/golden
a/korte
a/szilva
Ha $cucc = new ProjectIterator("a") kóddal indítok, akkor logikusan az alma, korte, szilva elemekre vagyok kíváncsi. Illetve a kérdésem pont az, hogy miért?? Az ITERATOR maga, az teljesen lineáris adatokon is iterálhat, nem? Akkor viszont nincs egy "a" ami parent lehetne.
$list = array('alma','korte','szilva');
foreach($list as $elem)
Itt az iterátornak nem volt egy PARENT, tehát ha a ProjectIteratorom lenne ilyen "egy dimenzios", akkor az "a"-val inicializálás lehetetlen.
Viszont, ha a RecursiveIteratort is megvalósítja az osztály, akkor meg az értelmetlen, hogy mondjuk "alma"-val inicializáljam, ha az "alma" "korte" "szilva" sorozaton akarok iterálni.
Először megírtam úgy, hogy "a"-val inicializál, de aztán mikor láttam, hogy néha sima array('alma','korte','szilva') szerű "lista" is lehet benne az adat, akkor átírtam, hogy a lista ELSŐ ELEMÉVEL kell inicializálni, tehát
$cucc = new ProjectIterator("a") csak az a-t adja vissza, vagy ha lenne b/ akkor az is.
$cucc = new ProjectIterator("alma") adja vissza a 3 gyümölcsöt, ha nem rekurzívan hívod.
De így meg az a gond, hogy honnan tudná valaki, hogy mi az első elem az adott szinten ahol listázni akarsz. Az "a" mint parent az 100%, de az "alma" mint első elem, kevsébé...
Nem tudom érteni fogja e valaki a kérdést, mert pont az a baj, hogy már én sem értem.
Parenttel vagy első elemmel való inicializálásra kell megírni az iteratorokat? (Iterator ÉS RecursiveIterator esetén)
Melyik a várt működés:
$cucc = new ProjectIterator("alma");
foreach($cucc as $gyumi)
{
echo $gyumi;
}
Kimenet: almakorteszilva
VAGY
$cucc = new ProjectIterator("a");
foreach($cucc as $gyumi)
{
echo $gyumi;
}
Kimenet: almakorteszilva
$cucc = new ProjectIterator("alma");
foreach($cucc as $gyumi)
{
echo $gyumi;
}
Kimenet: almakorteszilva
VAGY
$cucc = new ProjectIterator("a");
foreach($cucc as $gyumi)
{
echo $gyumi;
}
Kimenet: almakorteszilva
Ha a második, akkor hogy oldod meg ha sosincs egy parent, amin belül iterálsz? Jaaa, akkor lehet, hogy csak "new ProjectIterator()" és az menne a lineáris tömbön??
*g*
1000 Köszi,
Lion/KMP
ui: mindenesetre addig visszaírom parentesre...