comparison vendor/symfony/http-kernel/DataCollector/ConfigDataCollector.php @ 0:c75dbcec494b

Initial commit from drush-created site
author Chris Cannam
date Thu, 05 Jul 2018 14:24:15 +0000
parents
children a9cd425dd02b
comparison
equal deleted inserted replaced
-1:000000000000 0:c75dbcec494b
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12 namespace Symfony\Component\HttpKernel\DataCollector;
13
14 use Symfony\Component\HttpKernel\KernelInterface;
15 use Symfony\Component\HttpKernel\Kernel;
16 use Symfony\Component\HttpFoundation\Request;
17 use Symfony\Component\HttpFoundation\Response;
18 use Symfony\Component\VarDumper\Caster\LinkStub;
19
20 /**
21 * @author Fabien Potencier <fabien@symfony.com>
22 */
23 class ConfigDataCollector extends DataCollector implements LateDataCollectorInterface
24 {
25 /**
26 * @var KernelInterface
27 */
28 private $kernel;
29 private $name;
30 private $version;
31 private $hasVarDumper;
32
33 /**
34 * @param string $name The name of the application using the web profiler
35 * @param string $version The version of the application using the web profiler
36 */
37 public function __construct($name = null, $version = null)
38 {
39 $this->name = $name;
40 $this->version = $version;
41 $this->hasVarDumper = class_exists(LinkStub::class);
42 }
43
44 /**
45 * Sets the Kernel associated with this Request.
46 */
47 public function setKernel(KernelInterface $kernel = null)
48 {
49 $this->kernel = $kernel;
50 }
51
52 /**
53 * {@inheritdoc}
54 */
55 public function collect(Request $request, Response $response, \Exception $exception = null)
56 {
57 $this->data = array(
58 'app_name' => $this->name,
59 'app_version' => $this->version,
60 'token' => $response->headers->get('X-Debug-Token'),
61 'symfony_version' => Kernel::VERSION,
62 'symfony_state' => 'unknown',
63 'name' => isset($this->kernel) ? $this->kernel->getName() : 'n/a',
64 'env' => isset($this->kernel) ? $this->kernel->getEnvironment() : 'n/a',
65 'debug' => isset($this->kernel) ? $this->kernel->isDebug() : 'n/a',
66 'php_version' => PHP_VERSION,
67 'php_architecture' => PHP_INT_SIZE * 8,
68 'php_intl_locale' => class_exists('Locale', false) && \Locale::getDefault() ? \Locale::getDefault() : 'n/a',
69 'php_timezone' => date_default_timezone_get(),
70 'xdebug_enabled' => extension_loaded('xdebug'),
71 'apcu_enabled' => extension_loaded('apcu') && ini_get('apc.enabled'),
72 'zend_opcache_enabled' => extension_loaded('Zend OPcache') && ini_get('opcache.enable'),
73 'bundles' => array(),
74 'sapi_name' => PHP_SAPI,
75 );
76
77 if (isset($this->kernel)) {
78 foreach ($this->kernel->getBundles() as $name => $bundle) {
79 $this->data['bundles'][$name] = $this->hasVarDumper ? new LinkStub($bundle->getPath()) : $bundle->getPath();
80 }
81
82 $this->data['symfony_state'] = $this->determineSymfonyState();
83 $this->data['symfony_minor_version'] = sprintf('%s.%s', Kernel::MAJOR_VERSION, Kernel::MINOR_VERSION);
84 $eom = \DateTime::createFromFormat('m/Y', Kernel::END_OF_MAINTENANCE);
85 $eol = \DateTime::createFromFormat('m/Y', Kernel::END_OF_LIFE);
86 $this->data['symfony_eom'] = $eom->format('F Y');
87 $this->data['symfony_eol'] = $eol->format('F Y');
88 }
89
90 if (preg_match('~^(\d+(?:\.\d+)*)(.+)?$~', $this->data['php_version'], $matches) && isset($matches[2])) {
91 $this->data['php_version'] = $matches[1];
92 $this->data['php_version_extra'] = $matches[2];
93 }
94 }
95
96 /**
97 * {@inheritdoc}
98 */
99 public function reset()
100 {
101 $this->data = array();
102 }
103
104 public function lateCollect()
105 {
106 $this->data = $this->cloneVar($this->data);
107 }
108
109 public function getApplicationName()
110 {
111 return $this->data['app_name'];
112 }
113
114 public function getApplicationVersion()
115 {
116 return $this->data['app_version'];
117 }
118
119 /**
120 * Gets the token.
121 *
122 * @return string The token
123 */
124 public function getToken()
125 {
126 return $this->data['token'];
127 }
128
129 /**
130 * Gets the Symfony version.
131 *
132 * @return string The Symfony version
133 */
134 public function getSymfonyVersion()
135 {
136 return $this->data['symfony_version'];
137 }
138
139 /**
140 * Returns the state of the current Symfony release.
141 *
142 * @return string One of: unknown, dev, stable, eom, eol
143 */
144 public function getSymfonyState()
145 {
146 return $this->data['symfony_state'];
147 }
148
149 /**
150 * Returns the minor Symfony version used (without patch numbers of extra
151 * suffix like "RC", "beta", etc.).
152 *
153 * @return string
154 */
155 public function getSymfonyMinorVersion()
156 {
157 return $this->data['symfony_minor_version'];
158 }
159
160 /**
161 * Returns the human redable date when this Symfony version ends its
162 * maintenance period.
163 *
164 * @return string
165 */
166 public function getSymfonyEom()
167 {
168 return $this->data['symfony_eom'];
169 }
170
171 /**
172 * Returns the human redable date when this Symfony version reaches its
173 * "end of life" and won't receive bugs or security fixes.
174 *
175 * @return string
176 */
177 public function getSymfonyEol()
178 {
179 return $this->data['symfony_eol'];
180 }
181
182 /**
183 * Gets the PHP version.
184 *
185 * @return string The PHP version
186 */
187 public function getPhpVersion()
188 {
189 return $this->data['php_version'];
190 }
191
192 /**
193 * Gets the PHP version extra part.
194 *
195 * @return string|null The extra part
196 */
197 public function getPhpVersionExtra()
198 {
199 return isset($this->data['php_version_extra']) ? $this->data['php_version_extra'] : null;
200 }
201
202 /**
203 * @return int The PHP architecture as number of bits (e.g. 32 or 64)
204 */
205 public function getPhpArchitecture()
206 {
207 return $this->data['php_architecture'];
208 }
209
210 /**
211 * @return string
212 */
213 public function getPhpIntlLocale()
214 {
215 return $this->data['php_intl_locale'];
216 }
217
218 /**
219 * @return string
220 */
221 public function getPhpTimezone()
222 {
223 return $this->data['php_timezone'];
224 }
225
226 /**
227 * Gets the application name.
228 *
229 * @return string The application name
230 */
231 public function getAppName()
232 {
233 return $this->data['name'];
234 }
235
236 /**
237 * Gets the environment.
238 *
239 * @return string The environment
240 */
241 public function getEnv()
242 {
243 return $this->data['env'];
244 }
245
246 /**
247 * Returns true if the debug is enabled.
248 *
249 * @return bool true if debug is enabled, false otherwise
250 */
251 public function isDebug()
252 {
253 return $this->data['debug'];
254 }
255
256 /**
257 * Returns true if the XDebug is enabled.
258 *
259 * @return bool true if XDebug is enabled, false otherwise
260 */
261 public function hasXDebug()
262 {
263 return $this->data['xdebug_enabled'];
264 }
265
266 /**
267 * Returns true if APCu is enabled.
268 *
269 * @return bool true if APCu is enabled, false otherwise
270 */
271 public function hasApcu()
272 {
273 return $this->data['apcu_enabled'];
274 }
275
276 /**
277 * Returns true if Zend OPcache is enabled.
278 *
279 * @return bool true if Zend OPcache is enabled, false otherwise
280 */
281 public function hasZendOpcache()
282 {
283 return $this->data['zend_opcache_enabled'];
284 }
285
286 public function getBundles()
287 {
288 return $this->data['bundles'];
289 }
290
291 /**
292 * Gets the PHP SAPI name.
293 *
294 * @return string The environment
295 */
296 public function getSapiName()
297 {
298 return $this->data['sapi_name'];
299 }
300
301 /**
302 * {@inheritdoc}
303 */
304 public function getName()
305 {
306 return 'config';
307 }
308
309 /**
310 * Tries to retrieve information about the current Symfony version.
311 *
312 * @return string One of: dev, stable, eom, eol
313 */
314 private function determineSymfonyState()
315 {
316 $now = new \DateTime();
317 $eom = \DateTime::createFromFormat('m/Y', Kernel::END_OF_MAINTENANCE)->modify('last day of this month');
318 $eol = \DateTime::createFromFormat('m/Y', Kernel::END_OF_LIFE)->modify('last day of this month');
319
320 if ($now > $eol) {
321 $versionState = 'eol';
322 } elseif ($now > $eom) {
323 $versionState = 'eom';
324 } elseif ('' !== Kernel::EXTRA_VERSION) {
325 $versionState = 'dev';
326 } else {
327 $versionState = 'stable';
328 }
329
330 return $versionState;
331 }
332 }