PluginProbe ʕ •ᴥ•ʔ
Reviews Feed – Add Testimonials and Customer Reviews From Google Reviews, Yelp, TripAdvisor, and More / 2.7.0
Reviews Feed – Add Testimonials and Customer Reviews From Google Reviews, Yelp, TripAdvisor, and More v2.7.0
2.11.0 2.10.0 2.9.0 2.8.0 2.7.0 2.6.7 2.6.8 2.6.5 2.6.4 2.6.3 2.6.2 2.6.0 2.5.5 2.5.4 2.5.3 2.5.2 trunk 1.0 1.0.1 1.0.2 1.0.3 1.1 1.1.1 1.1.2 1.2.0 2.0 2.1.0 2.1.1 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.5.0 2.5.1
reviews-feed / vendor / php-di / phpdoc-reader / src / PhpDocReader / PhpParser / UseStatementParser.php
reviews-feed / vendor / php-di / phpdoc-reader / src / PhpDocReader / PhpParser Last commit date
TokenParser.php 1 month ago UseStatementParser.php 1 month ago
UseStatementParser.php
57 lines
1 <?php
2
3
4 namespace SmashBalloon\Reviews\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