[ Index ]

PHP Cross Reference of phpBB-3.1.12-deutsch

title

Body

[close]

/vendor/symfony/config/Symfony/Component/Config/ -> FileLocator.php (source)

   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  /**
  15   * FileLocator uses an array of pre-defined paths to find files.
  16   *
  17   * @author Fabien Potencier <fabien@symfony.com>
  18   */
  19  class FileLocator implements FileLocatorInterface
  20  {
  21      protected $paths;
  22  
  23      /**
  24       * Constructor.
  25       *
  26       * @param string|array $paths A path or an array of paths where to look for resources
  27       */
  28      public function __construct($paths = array())
  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 \InvalidArgumentException(sprintf('The file "%s" does not exist.', $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 = array();
  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              }
  66          }
  67  
  68          if (!$filepaths) {
  69              throw new \InvalidArgumentException(sprintf('The file "%s" does not exist (in: %s).', $name, implode(', ', $paths)));
  70          }
  71  
  72          return $filepaths;
  73      }
  74  
  75      /**
  76       * Returns whether the file path is an absolute path.
  77       *
  78       * @param string $file A file path
  79       *
  80       * @return bool
  81       */
  82      private function isAbsolutePath($file)
  83      {
  84          if ($file[0] === '/' || $file[0] === '\\'
  85              || (strlen($file) > 3 && ctype_alpha($file[0])
  86                  && $file[1] === ':'
  87                  && ($file[2] === '\\' || $file[2] === '/')
  88              )
  89              || null !== parse_url($file, PHP_URL_SCHEME)
  90          ) {
  91              return true;
  92          }
  93  
  94          return false;
  95      }
  96  }


Generated: Thu Jan 11 00:25:41 2018 Cross-referenced by PHPXref 0.7.1