[ Index ] |
PHP Cross Reference of phpBB-3.3.14-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <fabien@symfony.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * 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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Nov 25 19:05:08 2024 | Cross-referenced by PHPXref 0.7.1 |