Verzeichnisstruktur phpBB-3.3.15
- Veröffentlicht
- 28.08.2024
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
FileLocator.php
01 <?php
02
03 /*
04 * This file is part of the Symfony package.
05 *
06 * (c) Fabien Potencier <fabien@symfony.com>
07 *
08 * For the full copyright and license information, please view the LICENSE
09 * file that was distributed with this source code.
10 */
11
12 namespace Symfony\Component\Config;
13
14 use Symfony\Component\Config\Exception\FileLocatorFileNotFoundException;
15
16 /**
17 * FileLocator uses an array of pre-defined paths to find files.
18 *
19 * @author Fabien Potencier <fabien@symfony.com>
20 */
21 class FileLocator implements FileLocatorInterface
22 {
23 protected $paths;
24
25 /**
26 * @param string|array $paths A path or an array of paths where to look for resources
27 */
28 public function __construct($paths = [])
29 {
30 $this->paths = (array) $paths;
31 }
32
33 /**
34 * {@inheritdoc}
35 */
36 public function locate($name, $currentPath = null, $first = true)
37 {
38 if ('' == $name) {
39 throw new \InvalidArgumentException('An empty file name is not valid to be located.');
40 }
41
42 if ($this->isAbsolutePath($name)) {
43 if (!file_exists($name)) {
44 throw new FileLocatorFileNotFoundException(sprintf('The file "%s" does not exist.', $name), 0, null, [$name]);
45 }
46
47 return $name;
48 }
49
50 $paths = $this->paths;
51
52 if (null !== $currentPath) {
53 array_unshift($paths, $currentPath);
54 }
55
56 $paths = array_unique($paths);
57 $filepaths = $notfound = [];
58
59 foreach ($paths as $path) {
60 if (@file_exists($file = $path.\DIRECTORY_SEPARATOR.$name)) {
61 if (true === $first) {
62 return $file;
63 }
64 $filepaths[] = $file;
65 } else {
66 $notfound[] = $file;
67 }
68 }
69
70 if (!$filepaths) {
71 throw new FileLocatorFileNotFoundException(sprintf('The file "%s" does not exist (in: "%s").', $name, implode('", "', $paths)), 0, null, $notfound);
72 }
73
74 return $filepaths;
75 }
76
77 /**
78 * Returns whether the file path is an absolute path.
79 *
80 * @param string $file A file path
81 *
82 * @return bool
83 */
84 private function isAbsolutePath($file)
85 {
86 if ('/' === $file[0] || '\\' === $file[0]
87 || (\strlen($file) > 3 && ctype_alpha($file[0])
88 && ':' === $file[1]
89 && ('\\' === $file[2] || '/' === $file[2])
90 )
91 || null !== parse_url($file, \PHP_URL_SCHEME)
92 ) {
93 return true;
94 }
95
96 return false;
97 }
98 }
99