Вход Регистрация
Файл: symfony-2.7/src/Symfony/Bridge/Twig/Node/DumpNode.php
Строк: 91
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyBridgeTwigNode;

/**
 * @author Julien Galenski <julien.galenski@gmail.com>
 */
class DumpNode extends Twig_Node
{
    private 
$varPrefix;

    public function 
__construct($varPrefixTwig_NodeInterface $values null$lineno$tag null)
    {
        
parent::__construct(array('values' => $values), array(), $lineno$tag);
        
$this->varPrefix $varPrefix;
    }

    
/**
     * {@inheritdoc}
     */
    
public function compile(Twig_Compiler $compiler)
    {
        
$compiler
            
->write("if ($this->env->isDebug()) {n")
            ->
indent();

        
$values $this->getNode('values');

        if (
null === $values) {
            
// remove embedded templates (macros) from the context
            
$compiler
                
->write(sprintf('$%svars = array();'."n"$this->varPrefix))
                ->
write(sprintf('foreach ($context as $%1$skey => $%1$sval) {'."n"$this->varPrefix))
                ->
indent()
                ->
write(sprintf('if (!$%sval instanceof Twig_Template) {'."n"$this->varPrefix))
                ->
indent()
                ->
write(sprintf('$%1$svars[$%1$skey] = $%1$sval;'."n"$this->varPrefix))
                ->
outdent()
                ->
write("}n")
                ->
outdent()
                ->
write("}n")
                ->
addDebugInfo($this)
                ->
write(sprintf('SymfonyComponentVarDumperVarDumper::dump($%svars);'."n"$this->varPrefix));
        } elseif (
=== $values->count()) {
            
$compiler
                
->addDebugInfo($this)
                ->
write('SymfonyComponentVarDumperVarDumper::dump(')
                ->
subcompile($values->getNode(0))
                ->
raw(");n");
        } else {
            
$compiler
                
->addDebugInfo($this)
                ->
write('SymfonyComponentVarDumperVarDumper::dump(array('."n")
                ->
indent();
            foreach (
$values as $node) {
                
$compiler->addIndentation();
                if (
$node->hasAttribute('name')) {
                    
$compiler
                        
->string($node->getAttribute('name'))
                        ->
raw(' => ');
                }
                
$compiler
                    
->subcompile($node)
                    ->
raw(",n");
            }
            
$compiler
                
->outdent()
                ->
write("));n");
        }

        
$compiler
            
->outdent()
            ->
raw("}n");
    }
}
Онлайн: 1
Реклама