Example #1
0
 /**
  * Loads the configuration data from a resource.
  *
  * @param mixed   $resource A resource.
  * @param string  $type     The resource type.
  * @param boolean $require  Require processing?
  *
  * @return array The data.
  *
  * @throws LoaderException If the loader could not be used.
  * @throws LogicException  If no loader has been configured.
  */
 public function load($resource, $type = null, $require = false)
 {
     if (null === $this->loader) {
         throw new LogicException('No loader has been configured.');
     }
     if (false === $this->loader->supports($resource, $type)) {
         throw LoaderException::format('The resource "%s"%s is not supported by the loader.', is_scalar($resource) ? $resource : gettype($resource), $type ? " ({$type})" : '');
     }
     if ($this->cacheDir && $this->collector && is_string($resource) && false === strpos("\n", $resource) && false === strpos("\r", $resource)) {
         $cache = new ConfigCache($this->cacheDir . DIRECTORY_SEPARATOR . basename($resource) . '.cache', $this->debug);
         if ($cache->isFresh()) {
             if (method_exists($cache, 'getPath')) {
                 /** @noinspection PhpIncludeInspection */
                 return require $cache->getPath();
             }
             /** @noinspection PhpIncludeInspection */
             return require $cache;
         }
     }
     if ($this->collector) {
         $this->collector->clearResources();
     }
     $data = $this->process($this->loader->load($resource, $type), $resource, $type, $require);
     if (isset($cache)) {
         $cache->write('<?php return ' . var_export($data, true) . ';', $this->collector->getResources());
     }
     return $data;
 }
 /**
  * {@inheritDoc}
  */
 public function load($resource, $type = null)
 {
     $file = $this->locator->locate($resource, $type);
     if ($this->collector) {
         $this->collector->addResource(new FileResource($file));
     }
     $data = $this->doLoad($file);
     return $this->process($data, $resource);
 }