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