Source of file Chain.php
Size: 3,660 Bytes - Last Modified: 2013-06-06T08:06:01+02:00
/home/theseer/Downloads/Symfony/vendor/twig/twig/lib/Twig/Loader/Chain.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 | <?php /* * This file is part of Twig. * * (c) 2011 Fabien Potencier * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /** * Loads templates from other loaders. * * @author Fabien Potencier <fabien@symfony.com> */ class Twig_Loader_Chain implements Twig_LoaderInterface, Twig_ExistsLoaderInterface { private $hasSourceCache = array(); protected $loaders; /** * Constructor. * * @param Twig_LoaderInterface[] $loaders An array of loader instances */ public function __construct(array $loaders = array()) { $this->loaders = array(); foreach ($loaders as $loader) { $this->addLoader($loader); } } /** * Adds a loader instance. * * @param Twig_LoaderInterface $loader A Loader instance */ public function addLoader(Twig_LoaderInterface $loader) { $this->loaders[] = $loader; $this->hasSourceCache = array(); } /** * {@inheritdoc} */ public function getSource($name) { $exceptions = array(); foreach ($this->loaders as $loader) { if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) { continue; } try { return $loader->getSource($name); } catch (Twig_Error_Loader $e) { $exceptions[] = $e->getMessage(); } } throw new Twig_Error_Loader(sprintf('Template "%s" is not defined (%s).', $name, implode(', ', $exceptions))); } /** * {@inheritdoc} */ public function exists($name) { $name = (string) $name; if (isset($this->hasSourceCache[$name])) { return $this->hasSourceCache[$name]; } foreach ($this->loaders as $loader) { if ($loader instanceof Twig_ExistsLoaderInterface) { if ($loader->exists($name)) { return $this->hasSourceCache[$name] = true; } continue; } try { $loader->getSource($name); return $this->hasSourceCache[$name] = true; } catch (Twig_Error_Loader $e) { } } return $this->hasSourceCache[$name] = false; } /** * {@inheritdoc} */ public function getCacheKey($name) { $exceptions = array(); foreach ($this->loaders as $loader) { if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) { continue; } try { return $loader->getCacheKey($name); } catch (Twig_Error_Loader $e) { $exceptions[] = get_class($loader).': '.$e->getMessage(); } } throw new Twig_Error_Loader(sprintf('Template "%s" is not defined (%s).', $name, implode(' ', $exceptions))); } /** * {@inheritdoc} */ public function isFresh($name, $time) { $exceptions = array(); foreach ($this->loaders as $loader) { if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) { continue; } try { return $loader->isFresh($name, $time); } catch (Twig_Error_Loader $e) { $exceptions[] = get_class($loader).': '.$e->getMessage(); } } throw new Twig_Error_Loader(sprintf('Template "%s" is not defined (%s).', $name, implode(' ', $exceptions))); } } |