Blame view

mustache/php/vendor/Mustache/Autoloader.php 1.7 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
70
71
72
73
74
  <?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.
   */
  
  /**
   * Mustache class autoloader.
   */
  class Mustache_Autoloader
  {
      private $baseDir;
  
      /**
       * Autoloader constructor.
       *
       * @param string $baseDir Mustache library base directory (default: dirname(__FILE__).'/..')
       */
      public function __construct($baseDir = null)
      {
          if ($baseDir === null) {
              $baseDir = dirname(__FILE__).'/..';
          }
  
          // realpath doesn't always work, for example, with stream URIs
          $realDir = realpath($baseDir);
          if (is_dir($realDir)) {
              $this->baseDir = $realDir;
          } else {
              $this->baseDir = $baseDir;
          }
      }
  
      /**
       * Register a new instance as an SPL autoloader.
       *
       * @param string $baseDir Mustache library base directory (default: dirname(__FILE__).'/..')
       *
       * @return Mustache_Autoloader Registered Autoloader instance
       */
      public static function register($baseDir = null)
      {
          $loader = new self($baseDir);
          spl_autoload_register(array($loader, 'autoload'));
  
          return $loader;
      }
  
      /**
       * Autoload Mustache classes.
       *
       * @param string $class
       */
      public function autoload($class)
      {
          if ($class[0] === '\\') {
              $class = substr($class, 1);
          }
  
          if (strpos($class, 'Mustache') !== 0) {
              return;
          }
  
          $file = sprintf('%s/%s.php', $this->baseDir, str_replace('_', '/', $class));
          if (is_file($file)) {
              require $file;
          }
      }
  }