PluginProbe
Elementor Website Builder – more than just a page builder / 3.26.4
Elementor Website Builder – more than just a page builder v3.26.4
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / vendor_prefixed / php-di / phpdoc-reader / src / PhpDocReader / PhpParser / UseStatementParser.php

UseStatementParser.php in Elementor Website Builder – more than just a page builder 3.26.4, at vendor_prefixed/php-di/phpdoc-reader/src/PhpDocReader/PhpParser/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 declare (strict_types=1);
4 namespace ElementorDeps\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