class Twig_Loader_Chain in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/twig/twig/lib/Twig/Loader/Chain.php \Twig_Loader_Chain
Loads templates from other loaders.
@author Fabien Potencier <fabien@symfony.com>
Hierarchy
- class \Twig_Loader_Chain implements Twig_ExistsLoaderInterface, Twig_LoaderInterface
Expanded class hierarchy of Twig_Loader_Chain
1 string reference to 'Twig_Loader_Chain'
- core.services.yml in core/
core.services.yml - core/core.services.yml
1 service uses Twig_Loader_Chain
- twig.loader in core/
core.services.yml - Twig_Loader_Chain
File
- vendor/
twig/ twig/ lib/ Twig/ Loader/ Chain.php, line 17
View source
class Twig_Loader_Chain implements Twig_LoaderInterface, Twig_ExistsLoaderInterface {
private $hasSourceCache = array();
protected $loaders = array();
/**
* Constructor.
*
* @param Twig_LoaderInterface[] $loaders An array of loader instances
*/
public function __construct(array $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, $exceptions ? ' (' . 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, $exceptions ? ' (' . 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, $exceptions ? ' (' . implode(', ', $exceptions) . ')' : ''));
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
Twig_Loader_Chain:: |
private | property | ||
Twig_Loader_Chain:: |
protected | property | ||
Twig_Loader_Chain:: |
public | function | Adds a loader instance. | |
Twig_Loader_Chain:: |
public | function |
Check if we have the source code of a template, given its name. Overrides Twig_ExistsLoaderInterface:: |
|
Twig_Loader_Chain:: |
public | function |
Gets the cache key to use for the cache for a given template name. Overrides Twig_LoaderInterface:: |
|
Twig_Loader_Chain:: |
public | function |
Gets the source code of a template, given its name. Overrides Twig_LoaderInterface:: |
|
Twig_Loader_Chain:: |
public | function |
Returns true if the template is still fresh. Overrides Twig_LoaderInterface:: |
|
Twig_Loader_Chain:: |
public | function | Constructor. |