Project

General

Profile

1
<?php
2

    
3
/*
4
 * This file is part of Twig.
5
 *
6
 * (c) 2015 Fabien Potencier
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11

    
12
class Twig_Extension_Profiler extends Twig_Extension
13
{
14
    private $actives = array();
15

    
16
    public function __construct(Twig_Profiler_Profile $profile)
17
    {
18
        $this->actives[] = $profile;
19
    }
20

    
21
    public function enter(Twig_Profiler_Profile $profile)
22
    {
23
        $this->actives[0]->addProfile($profile);
24
        array_unshift($this->actives, $profile);
25
    }
26

    
27
    public function leave(Twig_Profiler_Profile $profile)
28
    {
29
        $profile->leave();
30
        array_shift($this->actives);
31

    
32
        if (1 === count($this->actives)) {
33
            $this->actives[0]->leave();
34
        }
35
    }
36

    
37
    public function getNodeVisitors()
38
    {
39
        return array(new Twig_Profiler_NodeVisitor_Profiler($this->getName()));
40
    }
41

    
42
    public function getName()
43
    {
44
        return 'profiler';
45
    }
46
}
(7-7/10)