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.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

Profile.php

Zuletzt modifiziert: 09.10.2024, 12:58 - Dateigröße: 3.59 KiB


001  <?php
002   
003  /*
004   * This file is part of Twig.
005   *
006   * (c) 2015 Fabien Potencier
007   *
008   * For the full copyright and license information, please view the LICENSE
009   * file that was distributed with this source code.
010   */
011   
012  /**
013   * @author Fabien Potencier <fabien@symfony.com>
014   */
015  class Twig_Profiler_Profile implements IteratorAggregate, Serializable
016  {
017      const ROOT = 'ROOT';
018      const BLOCK = 'block';
019      const TEMPLATE = 'template';
020      const MACRO = 'macro';
021   
022      private $template;
023      private $name;
024      private $type;
025      private $starts = array();
026      private $ends = array();
027      private $profiles = array();
028   
029      public function __construct($template = 'main', $type = self::ROOT, $name = 'main')
030      {
031          $this->template = $template;
032          $this->type = $type;
033          $this->name = 0 === strpos($name, '__internal_') ? 'INTERNAL' : $name;
034          $this->enter();
035      }
036   
037      public function getTemplate()
038      {
039          return $this->template;
040      }
041   
042      public function getType()
043      {
044          return $this->type;
045      }
046   
047      public function getName()
048      {
049          return $this->name;
050      }
051   
052      public function isRoot()
053      {
054          return self::ROOT === $this->type;
055      }
056   
057      public function isTemplate()
058      {
059          return self::TEMPLATE === $this->type;
060      }
061   
062      public function isBlock()
063      {
064          return self::BLOCK === $this->type;
065      }
066   
067      public function isMacro()
068      {
069          return self::MACRO === $this->type;
070      }
071   
072      public function getProfiles()
073      {
074          return $this->profiles;
075      }
076   
077      public function addProfile(Twig_Profiler_Profile $profile)
078      {
079          $this->profiles[] = $profile;
080      }
081   
082      /**
083       * Returns the duration in microseconds.
084       *
085       * @return int
086       */
087      public function getDuration()
088      {
089          if ($this->isRoot() && $this->profiles) {
090              // for the root node with children, duration is the sum of all child durations
091              $duration = 0;
092              foreach ($this->profiles as $profile) {
093                  $duration += $profile->getDuration();
094              }
095   
096              return $duration;
097          }
098   
099          return isset($this->ends['wt']) && isset($this->starts['wt']) ? $this->ends['wt'] - $this->starts['wt'] : 0;
100      }
101   
102      /**
103       * Returns the memory usage in bytes.
104       *
105       * @return int
106       */
107      public function getMemoryUsage()
108      {
109          return isset($this->ends['mu']) && isset($this->starts['mu']) ? $this->ends['mu'] - $this->starts['mu'] : 0;
110      }
111   
112      /**
113       * Returns the peak memory usage in bytes.
114       *
115       * @return int
116       */
117      public function getPeakMemoryUsage()
118      {
119          return isset($this->ends['pmu']) && isset($this->starts['pmu']) ? $this->ends['pmu'] - $this->starts['pmu'] : 0;
120      }
121   
122      /**
123       * Starts the profiling.
124       */
125      public function enter()
126      {
127          $this->starts = array(
128              'wt' => microtime(true),
129              'mu' => memory_get_usage(),
130              'pmu' => memory_get_peak_usage(),
131          );
132      }
133   
134      /**
135       * Stops the profiling.
136       */
137      public function leave()
138      {
139          $this->ends = array(
140              'wt' => microtime(true),
141              'mu' => memory_get_usage(),
142              'pmu' => memory_get_peak_usage(),
143          );
144      }
145   
146      public function getIterator()
147      {
148          return new ArrayIterator($this->profiles);
149      }
150   
151      public function serialize()
152      {
153          return serialize(array($this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles));
154      }
155   
156      public function unserialize($data)
157      {
158          list($this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles) = unserialize($data);
159      }
160  }
161