PluginProbe
Smash Balloon Social Post Feed – Simple Social Feeds for WordPress / 4.12.0
Smash Balloon Social Post Feed – Simple Social Feeds for WordPress v4.12.0
4.12.0 4.10.0 4.9.0 4.8.1 trunk 1.0 1.1 1.12.1 1.2.3 1.2.4 1.2.5 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.4.0 1.4.1 1.4.2 All 171 releases
custom-facebook-feed / vendor / php-di / phpdoc-reader / src / PhpDocReader / PhpParser / UseStatementParser.php
UseStatementParser.php
57 lines 1.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3
4 namespace FacebookFeed\Vendor\PhpDocReader\PhpParser;
5
6 use SplFileObject;
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 * Authors: Fabien Potencier <fabien@symfony.com> and Christian Kaps <christian.kaps@mohiva.com>
13 */
14 class UseStatementParser
15 {
16 /**
17 * @return array A list with use statements in the form (Alias => FQN).
18 */
19 public function parseUseStatements(\ReflectionClass $class): array
20 {
21 $filename = $class->getFilename();
22 if ($filename === \false) {
23 return [];
24 }
25 $content = $this->getFileContent($filename, $class->getStartLine());
26 if ($content === null) {
27 return [];
28 }
29 $namespace = preg_quote($class->getNamespaceName(), '/');
30 $content = preg_replace('/^.*?(\bnamespace\s+' . $namespace . '\s*[;{].*)$/s', '\1', $content);
31 $tokenizer = new TokenParser('<?php ' . $content);
32 return $tokenizer->parseUseStatements($class->getNamespaceName());
33 }
34 /**
35 * Gets the content of the file right up to the given line number.
36 *
37 * @param string $filename The name of the file to load.
38 * @param int $lineNumber The number of lines to read from file.
39 */
40 private function getFileContent(string $filename, int $lineNumber): string
41 {
42 if (!is_file($filename)) {
43 throw new \RuntimeException("Unable to read file {$filename}");
44 }
45 $content = '';
46 $lineCnt = 0;
47 $file = new SplFileObject($filename);
48 while (!$file->eof()) {
49 if ($lineCnt++ === $lineNumber) {
50 break;
51 }
52 $content .= $file->fgets();
53 }
54 return $content;
55 }
56 }
57