Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 /*
|
Chris@0
|
4 * This file is part of the Symfony package.
|
Chris@0
|
5 *
|
Chris@0
|
6 * (c) Fabien Potencier <fabien@symfony.com>
|
Chris@0
|
7 *
|
Chris@0
|
8 * For the full copyright and license information, please view the LICENSE
|
Chris@0
|
9 * file that was distributed with this source code.
|
Chris@0
|
10 */
|
Chris@0
|
11
|
Chris@0
|
12 namespace Symfony\Component\HttpKernel\Profiler;
|
Chris@0
|
13
|
Chris@0
|
14 use Symfony\Component\HttpKernel\DataCollector\DataCollectorInterface;
|
Chris@0
|
15
|
Chris@0
|
16 /**
|
Chris@0
|
17 * Profile.
|
Chris@0
|
18 *
|
Chris@0
|
19 * @author Fabien Potencier <fabien@symfony.com>
|
Chris@0
|
20 */
|
Chris@0
|
21 class Profile
|
Chris@0
|
22 {
|
Chris@0
|
23 private $token;
|
Chris@0
|
24
|
Chris@0
|
25 /**
|
Chris@0
|
26 * @var DataCollectorInterface[]
|
Chris@0
|
27 */
|
Chris@17
|
28 private $collectors = [];
|
Chris@0
|
29
|
Chris@0
|
30 private $ip;
|
Chris@0
|
31 private $method;
|
Chris@0
|
32 private $url;
|
Chris@0
|
33 private $time;
|
Chris@0
|
34 private $statusCode;
|
Chris@0
|
35
|
Chris@0
|
36 /**
|
Chris@0
|
37 * @var Profile
|
Chris@0
|
38 */
|
Chris@0
|
39 private $parent;
|
Chris@0
|
40
|
Chris@0
|
41 /**
|
Chris@0
|
42 * @var Profile[]
|
Chris@0
|
43 */
|
Chris@17
|
44 private $children = [];
|
Chris@0
|
45
|
Chris@0
|
46 /**
|
Chris@0
|
47 * @param string $token The token
|
Chris@0
|
48 */
|
Chris@0
|
49 public function __construct($token)
|
Chris@0
|
50 {
|
Chris@0
|
51 $this->token = $token;
|
Chris@0
|
52 }
|
Chris@0
|
53
|
Chris@0
|
54 /**
|
Chris@0
|
55 * Sets the token.
|
Chris@0
|
56 *
|
Chris@0
|
57 * @param string $token The token
|
Chris@0
|
58 */
|
Chris@0
|
59 public function setToken($token)
|
Chris@0
|
60 {
|
Chris@0
|
61 $this->token = $token;
|
Chris@0
|
62 }
|
Chris@0
|
63
|
Chris@0
|
64 /**
|
Chris@0
|
65 * Gets the token.
|
Chris@0
|
66 *
|
Chris@0
|
67 * @return string The token
|
Chris@0
|
68 */
|
Chris@0
|
69 public function getToken()
|
Chris@0
|
70 {
|
Chris@0
|
71 return $this->token;
|
Chris@0
|
72 }
|
Chris@0
|
73
|
Chris@0
|
74 /**
|
Chris@0
|
75 * Sets the parent token.
|
Chris@0
|
76 */
|
Chris@17
|
77 public function setParent(self $parent)
|
Chris@0
|
78 {
|
Chris@0
|
79 $this->parent = $parent;
|
Chris@0
|
80 }
|
Chris@0
|
81
|
Chris@0
|
82 /**
|
Chris@0
|
83 * Returns the parent profile.
|
Chris@0
|
84 *
|
Chris@0
|
85 * @return self
|
Chris@0
|
86 */
|
Chris@0
|
87 public function getParent()
|
Chris@0
|
88 {
|
Chris@0
|
89 return $this->parent;
|
Chris@0
|
90 }
|
Chris@0
|
91
|
Chris@0
|
92 /**
|
Chris@0
|
93 * Returns the parent token.
|
Chris@0
|
94 *
|
Chris@17
|
95 * @return string|null The parent token
|
Chris@0
|
96 */
|
Chris@0
|
97 public function getParentToken()
|
Chris@0
|
98 {
|
Chris@0
|
99 return $this->parent ? $this->parent->getToken() : null;
|
Chris@0
|
100 }
|
Chris@0
|
101
|
Chris@0
|
102 /**
|
Chris@0
|
103 * Returns the IP.
|
Chris@0
|
104 *
|
Chris@0
|
105 * @return string The IP
|
Chris@0
|
106 */
|
Chris@0
|
107 public function getIp()
|
Chris@0
|
108 {
|
Chris@0
|
109 return $this->ip;
|
Chris@0
|
110 }
|
Chris@0
|
111
|
Chris@0
|
112 /**
|
Chris@0
|
113 * Sets the IP.
|
Chris@0
|
114 *
|
Chris@0
|
115 * @param string $ip
|
Chris@0
|
116 */
|
Chris@0
|
117 public function setIp($ip)
|
Chris@0
|
118 {
|
Chris@0
|
119 $this->ip = $ip;
|
Chris@0
|
120 }
|
Chris@0
|
121
|
Chris@0
|
122 /**
|
Chris@0
|
123 * Returns the request method.
|
Chris@0
|
124 *
|
Chris@0
|
125 * @return string The request method
|
Chris@0
|
126 */
|
Chris@0
|
127 public function getMethod()
|
Chris@0
|
128 {
|
Chris@0
|
129 return $this->method;
|
Chris@0
|
130 }
|
Chris@0
|
131
|
Chris@0
|
132 public function setMethod($method)
|
Chris@0
|
133 {
|
Chris@0
|
134 $this->method = $method;
|
Chris@0
|
135 }
|
Chris@0
|
136
|
Chris@0
|
137 /**
|
Chris@0
|
138 * Returns the URL.
|
Chris@0
|
139 *
|
Chris@0
|
140 * @return string The URL
|
Chris@0
|
141 */
|
Chris@0
|
142 public function getUrl()
|
Chris@0
|
143 {
|
Chris@0
|
144 return $this->url;
|
Chris@0
|
145 }
|
Chris@0
|
146
|
Chris@0
|
147 public function setUrl($url)
|
Chris@0
|
148 {
|
Chris@0
|
149 $this->url = $url;
|
Chris@0
|
150 }
|
Chris@0
|
151
|
Chris@0
|
152 /**
|
Chris@0
|
153 * Returns the time.
|
Chris@0
|
154 *
|
Chris@0
|
155 * @return int The time
|
Chris@0
|
156 */
|
Chris@0
|
157 public function getTime()
|
Chris@0
|
158 {
|
Chris@0
|
159 if (null === $this->time) {
|
Chris@0
|
160 return 0;
|
Chris@0
|
161 }
|
Chris@0
|
162
|
Chris@0
|
163 return $this->time;
|
Chris@0
|
164 }
|
Chris@0
|
165
|
Chris@0
|
166 /**
|
Chris@14
|
167 * @param int $time The time
|
Chris@0
|
168 */
|
Chris@0
|
169 public function setTime($time)
|
Chris@0
|
170 {
|
Chris@0
|
171 $this->time = $time;
|
Chris@0
|
172 }
|
Chris@0
|
173
|
Chris@0
|
174 /**
|
Chris@0
|
175 * @param int $statusCode
|
Chris@0
|
176 */
|
Chris@0
|
177 public function setStatusCode($statusCode)
|
Chris@0
|
178 {
|
Chris@0
|
179 $this->statusCode = $statusCode;
|
Chris@0
|
180 }
|
Chris@0
|
181
|
Chris@0
|
182 /**
|
Chris@0
|
183 * @return int
|
Chris@0
|
184 */
|
Chris@0
|
185 public function getStatusCode()
|
Chris@0
|
186 {
|
Chris@0
|
187 return $this->statusCode;
|
Chris@0
|
188 }
|
Chris@0
|
189
|
Chris@0
|
190 /**
|
Chris@0
|
191 * Finds children profilers.
|
Chris@0
|
192 *
|
Chris@0
|
193 * @return self[]
|
Chris@0
|
194 */
|
Chris@0
|
195 public function getChildren()
|
Chris@0
|
196 {
|
Chris@0
|
197 return $this->children;
|
Chris@0
|
198 }
|
Chris@0
|
199
|
Chris@0
|
200 /**
|
Chris@0
|
201 * Sets children profiler.
|
Chris@0
|
202 *
|
Chris@0
|
203 * @param Profile[] $children
|
Chris@0
|
204 */
|
Chris@0
|
205 public function setChildren(array $children)
|
Chris@0
|
206 {
|
Chris@17
|
207 $this->children = [];
|
Chris@0
|
208 foreach ($children as $child) {
|
Chris@0
|
209 $this->addChild($child);
|
Chris@0
|
210 }
|
Chris@0
|
211 }
|
Chris@0
|
212
|
Chris@0
|
213 /**
|
Chris@0
|
214 * Adds the child token.
|
Chris@0
|
215 */
|
Chris@17
|
216 public function addChild(self $child)
|
Chris@0
|
217 {
|
Chris@0
|
218 $this->children[] = $child;
|
Chris@0
|
219 $child->setParent($this);
|
Chris@0
|
220 }
|
Chris@0
|
221
|
Chris@0
|
222 /**
|
Chris@0
|
223 * Gets a Collector by name.
|
Chris@0
|
224 *
|
Chris@0
|
225 * @param string $name A collector name
|
Chris@0
|
226 *
|
Chris@0
|
227 * @return DataCollectorInterface A DataCollectorInterface instance
|
Chris@0
|
228 *
|
Chris@0
|
229 * @throws \InvalidArgumentException if the collector does not exist
|
Chris@0
|
230 */
|
Chris@0
|
231 public function getCollector($name)
|
Chris@0
|
232 {
|
Chris@0
|
233 if (!isset($this->collectors[$name])) {
|
Chris@0
|
234 throw new \InvalidArgumentException(sprintf('Collector "%s" does not exist.', $name));
|
Chris@0
|
235 }
|
Chris@0
|
236
|
Chris@0
|
237 return $this->collectors[$name];
|
Chris@0
|
238 }
|
Chris@0
|
239
|
Chris@0
|
240 /**
|
Chris@0
|
241 * Gets the Collectors associated with this profile.
|
Chris@0
|
242 *
|
Chris@0
|
243 * @return DataCollectorInterface[]
|
Chris@0
|
244 */
|
Chris@0
|
245 public function getCollectors()
|
Chris@0
|
246 {
|
Chris@0
|
247 return $this->collectors;
|
Chris@0
|
248 }
|
Chris@0
|
249
|
Chris@0
|
250 /**
|
Chris@0
|
251 * Sets the Collectors associated with this profile.
|
Chris@0
|
252 *
|
Chris@0
|
253 * @param DataCollectorInterface[] $collectors
|
Chris@0
|
254 */
|
Chris@0
|
255 public function setCollectors(array $collectors)
|
Chris@0
|
256 {
|
Chris@17
|
257 $this->collectors = [];
|
Chris@0
|
258 foreach ($collectors as $collector) {
|
Chris@0
|
259 $this->addCollector($collector);
|
Chris@0
|
260 }
|
Chris@0
|
261 }
|
Chris@0
|
262
|
Chris@0
|
263 /**
|
Chris@0
|
264 * Adds a Collector.
|
Chris@0
|
265 */
|
Chris@0
|
266 public function addCollector(DataCollectorInterface $collector)
|
Chris@0
|
267 {
|
Chris@0
|
268 $this->collectors[$collector->getName()] = $collector;
|
Chris@0
|
269 }
|
Chris@0
|
270
|
Chris@0
|
271 /**
|
Chris@0
|
272 * Returns true if a Collector for the given name exists.
|
Chris@0
|
273 *
|
Chris@0
|
274 * @param string $name A collector name
|
Chris@0
|
275 *
|
Chris@0
|
276 * @return bool
|
Chris@0
|
277 */
|
Chris@0
|
278 public function hasCollector($name)
|
Chris@0
|
279 {
|
Chris@0
|
280 return isset($this->collectors[$name]);
|
Chris@0
|
281 }
|
Chris@0
|
282
|
Chris@0
|
283 public function __sleep()
|
Chris@0
|
284 {
|
Chris@17
|
285 return ['token', 'parent', 'children', 'collectors', 'ip', 'method', 'url', 'time', 'statusCode'];
|
Chris@0
|
286 }
|
Chris@0
|
287 }
|