PluginProbe ʕ •ᴥ•ʔ
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode / 2.4.1
Cookiebot by Usercentrics – Automatic Cookie Banner for GDPR/CCPA & Google Consent Mode v2.4.1
4.7.2 4.7.1 trunk 2.3.0 2.4.0 2.4.1 2.4.2 2.5.0 3.0.0 3.0.1 3.1.0 3.10.0 3.10.1 3.11.1 3.11.2 3.11.3 3.2.0 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.6.0 3.6.1 3.6.2 3.6.5 3.6.6 3.7.0 3.7.1 3.8.0 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.2.0 4.2.1 4.2.10 4.2.11 4.2.12 4.2.13 4.2.14 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 4.2.7 4.2.8 4.2.9 4.3.0 4.3.1 4.3.10 4.3.11 4.3.12 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.7.1 4.3.8 4.3.9 4.3.9.1 4.4.0 4.4.1 4.4.2 4.5.0 4.5.1 4.5.10 4.5.11 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8 4.5.9 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.7.0
cookiebot / addons / lib / ioc / php-di / phpdoc-reader / src / PhpDocReader / PhpParser / UseStatementParser.php
cookiebot / addons / lib / ioc / php-di / phpdoc-reader / src / PhpDocReader / PhpParser Last commit date
TokenParser.php 7 years ago UseStatementParser.php 7 years ago
UseStatementParser.php
69 lines
1 <?php
2
3 namespace PhpDocReader\PhpParser;
4
5 use SplFileObject;
6
7 /**
8 * Parses a file for "use" declarations.
9 *
10 * Class taken and adapted from doctrine/annotations to avoid pulling the whole package.
11 *
12 * @author Fabien Potencier <fabien@symfony.com>
13 * @author Christian Kaps <christian.kaps@mohiva.com>
14 */
15 class UseStatementParser
16 {
17 /**
18 * @return array A list with use statements in the form (Alias => FQN).
19 */
20 public function parseUseStatements(\ReflectionClass $class)
21 {
22 if (false === $filename = $class->getFilename()) {
23 return array();
24 }
25
26 $content = $this->getFileContent($filename, $class->getStartLine());
27
28 if (null === $content) {
29 return array();
30 }
31
32 $namespace = preg_quote($class->getNamespaceName());
33 $content = preg_replace('/^.*?(\bnamespace\s+' . $namespace . '\s*[;{].*)$/s', '\\1', $content);
34 $tokenizer = new TokenParser('<?php ' . $content);
35
36 $statements = $tokenizer->parseUseStatements($class->getNamespaceName());
37
38 return $statements;
39 }
40
41 /**
42 * Gets the content of the file right up to the given line number.
43 *
44 * @param string $filename The name of the file to load.
45 * @param integer $lineNumber The number of lines to read from file.
46 *
47 * @return string The content of the file.
48 */
49 private function getFileContent($filename, $lineNumber)
50 {
51 if ( ! is_file($filename)) {
52 return null;
53 }
54
55 $content = '';
56 $lineCnt = 0;
57 $file = new SplFileObject($filename);
58 while (!$file->eof()) {
59 if ($lineCnt++ == $lineNumber) {
60 break;
61 }
62
63 $content .= $file->fgets();
64 }
65
66 return $content;
67 }
68 }
69