Latte\Macros\CoreMacros::macroEndForeach PHP Метод

macroEndForeach() публичный Метод

..}
public macroEndForeach ( MacroNode $node, PhpWriter $writer )
$node Latte\MacroNode
$writer Latte\PhpWriter
    public function macroEndForeach(MacroNode $node, PhpWriter $writer)
    {
        $noCheck = Helpers::removeFilter($node->modifiers, 'nocheck');
        $noIterator = Helpers::removeFilter($node->modifiers, 'noiterator');
        if ($node->modifiers) {
            throw new CompileException('Only modifiers |noiterator and |nocheck are allowed here.');
        }
        $node->openingCode = '<?php $iterations = 0; ';
        $args = $writer->formatArgs();
        if (!$noCheck) {
            preg_match('#.+\\s+as\\s*\\$(\\w+)(?:\\s*=>\\s*\\$(\\w+))?#i', $args, $m);
            for ($i = 1; $i < count($m); $i++) {
                $this->overwrittenVars[$m[$i]][] = $node->startLine;
            }
        }
        if (!$noIterator && preg_match('#\\W(\\$iterator|include|require|get_defined_vars)\\W#', $this->getCompiler()->expandTokens($node->content))) {
            $node->openingCode .= 'foreach ($iterator = $this->global->its[] = new LR\\CachingIterator(' . preg_replace('#(.*)\\s+as\\s+#i', '$1) as ', $args, 1) . ') { ?>';
            $node->closingCode = '<?php $iterations++; } array_pop($this->global->its); $iterator = end($this->global->its); ?>';
        } else {
            $node->openingCode .= 'foreach (' . $args . ') { ?>';
            $node->closingCode = '<?php $iterations++; } ?>';
        }
    }