Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
199 lars 1
<?php namespace Clockwork\Support\Twig;
2
 
3
use Clockwork\Request\Timeline\Timeline;
4
 
5
use Twig\Profiler\Profile;
6
 
7
// Converts Twig profiles to a Clockwork rendered views timelines
8
class ProfilerClockworkDumper
9
{
10
	protected $lastId = 1;
11
 
12
	// Dumps a profile into a new rendered views timeline
13
	public function dump(Profile $profile)
14
	{
15
		$timeline = new Timeline;
16
 
17
		$this->dumpProfile($profile, $timeline);
18
 
19
		return $timeline;
20
	}
21
 
22
	public function dumpProfile(Profile $profile, Timeline $timeline, $parent = null)
23
	{
24
		$id = $this->lastId++;
25
 
26
		if ($profile->isRoot()) {
27
			$name = $profile->getName();
28
		} elseif ($profile->isTemplate()) {
29
			$name = basename($profile->getTemplate());
30
		} else {
31
			$name = basename($profile->getTemplate()) . '::' . $profile->getType() . '(' . $profile->getName() . ')';
32
		}
33
 
34
		foreach ($profile as $p) {
35
			$this->dumpProfile($p, $timeline, $id);
36
		}
37
 
38
		$data = $profile->__serialize();
39
 
40
		$timeline->event($name, [
41
			'name'  => $id,
42
			'start' => isset($data[3]['wt']) ? $data[3]['wt'] : null,
43
			'end'   => isset($data[4]['wt']) ? $data[4]['wt'] : null,
44
			'data'  => [
45
				'data'        => [],
46
				'memoryUsage' => isset($data[4]['mu']) ? $data[4]['mu'] : null,
47
				'parent'      => $parent
48
			]
49
		]);
50
	}
51
}