Iterator v presenteru → existuje na to neco primo v Nette?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
ras
Člen | 135
+
0
-

Ahoj vsem,

chtel bych se zeptat, zda existuje v neco jako iterator pro obecny foreach (napr. v presenteru) stejne tak, jak je iterator v sablonach?

Predpokladam spravne, ze ne … a ze je to na kazdem, aby si to napsal?

kravčo
Člen | 721
+
0
-

Iterátor čoho, resp aký iterátor?

ras
Člen | 135
+
0
-

no, kdyz mam nejaky foreach, tak abych v nem jednoduse (stejne jako v v sablonach) mohl jednoduse se ptat isFirst(), isOdd(), atd. → tj. iterator pruchodu foreachem, resp. polem

kravčo
Člen | 721
+
0
-

V tom prípade použi rovnaký ako používaš v šablónach – Nette\Iterators\CachingIterator.

Tomáš Votruba
Moderator | 1114
+
0
-

Řeším stejný request. Je to lepší/efektivnější než použít klasické $i?

<?php

$i = 0;
foreach($result as $row) {
	$i++;
}
dump($i);

?>

Případně jak takové použití vypadá?

mm-marek
Člen | 61
+
0
-

Stejně jako v šabloně :)

$a = new \Nette\Iterators\CachingIterator($array);
foreach($a as $row){
    if($a->isOdd()){
         //$row;
    }
}
Filip Procházka
Moderator | 4668
+
0
-

@**Schmutzka**: Možná nění efektivnější, je však elegantnější.