<?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)]; } }