Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

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.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

FileLoader.php

Zuletzt modifiziert: 09.10.2024, 12:58 - Dateigröße: 3.31 KiB


 001  <?php
 002   
 003  /*
 004   * This file is part of the Symfony package.
 005   *
 006   * (c) Fabien Potencier <fabien@symfony.com>
 007   *
 008   * For the full copyright and license information, please view the LICENSE
 009   * file that was distributed with this source code.
 010   */
 011   
 012  namespace Symfony\Component\Config\Loader;
 013   
 014  use Symfony\Component\Config\FileLocatorInterface;
 015  use Symfony\Component\Config\Exception\FileLoaderLoadException;
 016  use Symfony\Component\Config\Exception\FileLoaderImportCircularReferenceException;
 017   
 018  /**
 019   * FileLoader is the abstract class used by all built-in loaders that are file based.
 020   *
 021   * @author Fabien Potencier <fabien@symfony.com>
 022   */
 023  abstract class FileLoader extends Loader
 024  {
 025      protected static $loading = array();
 026   
 027      protected $locator;
 028   
 029      private $currentDir;
 030   
 031      /**
 032       * Constructor.
 033       *
 034       * @param FileLocatorInterface $locator A FileLocatorInterface instance
 035       */
 036      public function __construct(FileLocatorInterface $locator)
 037      {
 038          $this->locator = $locator;
 039      }
 040   
 041      public function setCurrentDir($dir)
 042      {
 043          $this->currentDir = $dir;
 044      }
 045   
 046      public function getLocator()
 047      {
 048          return $this->locator;
 049      }
 050   
 051      /**
 052       * Imports a resource.
 053       *
 054       * @param mixed   $resource       A Resource
 055       * @param string  $type           The resource type
 056       * @param bool    $ignoreErrors   Whether to ignore import errors or not
 057       * @param string  $sourceResource The original resource importing the new resource
 058       *
 059       * @return mixed
 060       *
 061       * @throws FileLoaderLoadException
 062       * @throws FileLoaderImportCircularReferenceException
 063       */
 064      public function import($resource, $type = null, $ignoreErrors = false, $sourceResource = null)
 065      {
 066          try {
 067              $loader = $this->resolve($resource, $type);
 068   
 069              if ($loader instanceof FileLoader && null !== $this->currentDir) {
 070                  // we fallback to the current locator to keep BC
 071                  // as some some loaders do not call the parent __construct()
 072                  // @deprecated should be removed in 3.0
 073                  $locator = $loader->getLocator() ?: $this->locator;
 074                  $resource = $locator->locate($resource, $this->currentDir, false);
 075              }
 076   
 077              $resources = is_array($resource) ? $resource : array($resource);
 078              for ($i = 0; $i < $resourcesCount = count($resources); $i++ ) {
 079                  if (isset(self::$loading[$resources[$i]])) {
 080                      if ($i == $resourcesCount-1) {
 081                          throw new FileLoaderImportCircularReferenceException(array_keys(self::$loading));
 082                      }
 083                  } else {
 084                      $resource = $resources[$i];
 085                      break;
 086                  }
 087              }
 088              self::$loading[$resource] = true;
 089   
 090              $ret = $loader->load($resource, $type);
 091   
 092              unset(self::$loading[$resource]);
 093   
 094              return $ret;
 095          } catch (FileLoaderImportCircularReferenceException $e) {
 096              throw $e;
 097          } catch (\Exception $e) {
 098              if (!$ignoreErrors) {
 099                  // prevent embedded imports from nesting multiple exceptions
 100                  if ($e instanceof FileLoaderLoadException) {
 101                      throw $e;
 102                  }
 103   
 104                  throw new FileLoaderLoadException($resource, $sourceResource, null, $e);
 105              }
 106          }
 107      }
 108  }
 109