public function before(PHPTAL_Php_CodeWriter $codewriter) { $this->var = $codewriter->createTempVariable(); // alias to repeats handler to avoid calling extra getters on each variable access $codewriter->doSetVar($this->var, '$ctx->repeat'); list($varName, $expression) = $this->parseSetExpression($this->expression); $code = $codewriter->evaluateExpression($expression); // instantiate controller using expression $codewriter->doSetVar($this->var . '->' . $varName, 'new PHPTAL_RepeatController(' . $code . ')' . "\n"); $codewriter->pushContext(); // Lets loop the iterator with a foreach construct $codewriter->doForeach('$ctx->' . $varName, $this->var . '->' . $varName); }