Blame view

mustache/php/vendor/Mustache/Loader/CascadingLoader.php 1.75 KB
5a739853   patrick.he   commit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
  <?php
  
  /*
   * This file is part of Mustache.php.
   *
   * (c) 2010-2014 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 Mustache_Loader[] $loaders
       */
      public function __construct(array $loaders = array())
      {
          $this->loaders = array();
          foreach ($loaders as $loader) {
              $this->addLoader($loader);
          }
      }
  
      /**
       * Add a Loader instance.
       *
       * @param Mustache_Loader $loader
       */
      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);
      }
  }