123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- /**
- * @package Grav\Common\Twig
- *
- * @copyright Copyright (c) 2015 - 2023 Trilby Media, LLC. All rights reserved.
- * @license MIT License; see LICENSE file for details.
- */
- namespace Grav\Common\Twig;
- use Clockwork\Request\Timeline\Timeline;
- use Twig\Profiler\Profile;
- /**
- * Class TwigClockworkDumper
- * @package Grav\Common\Twig
- */
- class TwigClockworkDumper
- {
- protected $lastId = 1;
- /**
- * Dumps a profile into a new rendered views timeline
- *
- * @param Profile $profile
- * @return Timeline
- */
- public function dump(Profile $profile)
- {
- $timeline = new Timeline;
- $this->dumpProfile($profile, $timeline);
- return $timeline;
- }
- /**
- * @param Profile $profile
- * @param Timeline $timeline
- * @param null $parent
- */
- public function dumpProfile(Profile $profile, Timeline $timeline, $parent = null)
- {
- $id = $this->lastId++;
- if ($profile->isRoot()) {
- $name = $profile->getName();
- } elseif ($profile->isTemplate()) {
- $name = $profile->getTemplate();
- } else {
- $name = $profile->getTemplate() . '::' . $profile->getType() . '(' . $profile->getName() . ')';
- }
- foreach ($profile as $p) {
- $this->dumpProfile($p, $timeline, $id);
- }
- $data = $profile->__serialize();
- $timeline->event($name, [
- 'name' => $id,
- 'start' => $data[3]['wt'] ?? null,
- 'end' => $data[4]['wt'] ?? null,
- 'data' => [
- 'data' => [],
- 'memoryUsage' => $data[4]['mu'] ?? null,
- 'parent' => $parent
- ]
- ]);
- }
- }
|