70 lines
1.8 KiB
PHP
70 lines
1.8 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of Mustache.php.
|
|
*
|
|
* (c) 2013 Justin Hileman
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
/**
|
|
* A Mustache Template cascading loader implementation, which delegates to other
|
|
* Loader instances.
|
|
*/
|
|
class Mustache_Loader_CascadingLoader implements Mustache_Loader
|
|
{
|
|
private $loaders;
|
|
|
|
/**
|
|
* Construct a CascadingLoader with an array of loaders:
|
|
*
|
|
* $loader = new Mustache_Loader_CascadingLoader(array(
|
|
* new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__),
|
|
* new Mustache_Loader_FilesystemLoader(__DIR__.'/templates')
|
|
* ));
|
|
*
|
|
* @param array $loaders An array of Mustache Loader instances
|
|
*/
|
|
public function __construct(array $loaders = array())
|
|
{
|
|
$this->loaders = array();
|
|
foreach ($loaders as $loader) {
|
|
$this->addLoader($loader);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Add a Loader instance.
|
|
*
|
|
* @param Mustache_Loader $loader A Mustache Loader instance
|
|
*/
|
|
public function addLoader(Mustache_Loader $loader)
|
|
{
|
|
$this->loaders[] = $loader;
|
|
}
|
|
|
|
/**
|
|
* Load a Template by name.
|
|
*
|
|
* @throws Mustache_Exception_UnknownTemplateException If a template file is not found.
|
|
*
|
|
* @param string $name
|
|
*
|
|
* @return string Mustache Template source
|
|
*/
|
|
public function load($name)
|
|
{
|
|
foreach ($this->loaders as $loader) {
|
|
try {
|
|
return $loader->load($name);
|
|
} catch (Mustache_Exception_UnknownTemplateException $e) {
|
|
// do nothing, check the next loader.
|
|
}
|
|
}
|
|
|
|
throw new Mustache_Exception_UnknownTemplateException($name);
|
|
}
|
|
}
|