Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
Profiler.php
01 <?php
02
03 /*
04 * This file is part of Twig.
05 *
06 * (c) 2015 Fabien Potencier
07 *
08 * For the full copyright and license information, please view the LICENSE
09 * file that was distributed with this source code.
10 */
11
12 /**
13 * @author Fabien Potencier <fabien@symfony.com>
14 */
15 class Twig_Profiler_NodeVisitor_Profiler extends Twig_BaseNodeVisitor
16 {
17 private $extensionName;
18
19 public function __construct($extensionName)
20 {
21 $this->extensionName = $extensionName;
22 }
23
24 /**
25 * {@inheritdoc}
26 */
27 protected function doEnterNode(Twig_Node $node, Twig_Environment $env)
28 {
29 return $node;
30 }
31
32 /**
33 * {@inheritdoc}
34 */
35 protected function doLeaveNode(Twig_Node $node, Twig_Environment $env)
36 {
37 if ($node instanceof Twig_Node_Module) {
38 $varName = $this->getVarName();
39 $node->setNode('display_start', new Twig_Node(array(new Twig_Profiler_Node_EnterProfile($this->extensionName, Twig_Profiler_Profile::TEMPLATE, $node->getAttribute('filename'), $varName), $node->getNode('display_start'))));
40 $node->setNode('display_end', new Twig_Node(array(new Twig_Profiler_Node_LeaveProfile($varName), $node->getNode('display_end'))));
41 } elseif ($node instanceof Twig_Node_Block) {
42 $varName = $this->getVarName();
43 $node->setNode('body', new Twig_Node_Body(array(
44 new Twig_Profiler_Node_EnterProfile($this->extensionName, Twig_Profiler_Profile::BLOCK, $node->getAttribute('name'), $varName),
45 $node->getNode('body'),
46 new Twig_Profiler_Node_LeaveProfile($varName),
47 )));
48 } elseif ($node instanceof Twig_Node_Macro) {
49 $varName = $this->getVarName();
50 $node->setNode('body', new Twig_Node_Body(array(
51 new Twig_Profiler_Node_EnterProfile($this->extensionName, Twig_Profiler_Profile::MACRO, $node->getAttribute('name'), $varName),
52 $node->getNode('body'),
53 new Twig_Profiler_Node_LeaveProfile($varName),
54 )));
55 }
56
57 return $node;
58 }
59
60 private function getVarName()
61 {
62 return sprintf('__internal_%s', hash('sha256', uniqid(mt_rand(), true), false));
63 }
64
65 /**
66 * {@inheritdoc}
67 */
68 public function getPriority()
69 {
70 return 0;
71 }
72 }
73