53 lines
1.0 KiB
PHP
53 lines
1.0 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of Twig.
|
|
*
|
|
* (c) Fabien Potencier
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Twig\Extension;
|
|
|
|
use Twig\Profiler\NodeVisitor\ProfilerNodeVisitor;
|
|
use Twig\Profiler\Profile;
|
|
|
|
class ProfilerExtension extends AbstractExtension
|
|
{
|
|
private $actives = [];
|
|
|
|
public function __construct(Profile $profile)
|
|
{
|
|
$this->actives[] = $profile;
|
|
}
|
|
|
|
/**
|
|
* @return void
|
|
*/
|
|
public function enter(Profile $profile)
|
|
{
|
|
$this->actives[0]->addProfile($profile);
|
|
array_unshift($this->actives, $profile);
|
|
}
|
|
|
|
/**
|
|
* @return void
|
|
*/
|
|
public function leave(Profile $profile)
|
|
{
|
|
$profile->leave();
|
|
array_shift($this->actives);
|
|
|
|
if (1 === \count($this->actives)) {
|
|
$this->actives[0]->leave();
|
|
}
|
|
}
|
|
|
|
public function getNodeVisitors(): array
|
|
{
|
|
return [new ProfilerNodeVisitor(static::class)];
|
|
}
|
|
}
|