[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * This file is part of Mustache.php. 5 * 6 * (c) 2010-2015 Justin Hileman 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12 /** 13 * Mustache Template filesystem Loader implementation. 14 * 15 * A FilesystemLoader instance loads Mustache Template source from the filesystem by name: 16 * 17 * $loader = new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'); 18 * $tpl = $loader->load('foo'); // equivalent to `file_get_contents(dirname(__FILE__).'/views/foo.mustache'); 19 * 20 * This is probably the most useful Mustache Loader implementation. It can be used for partials and normal Templates: 21 * 22 * $m = new Mustache(array( 23 * 'loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'), 24 * 'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views/partials'), 25 * )); 26 */ 27 class Mustache_Loader_FilesystemLoader implements Mustache_Loader 28 { 29 private $baseDir; 30 private $extension = '.mustache'; 31 private $templates = array(); 32 33 /** 34 * Mustache filesystem Loader constructor. 35 * 36 * Passing an $options array allows overriding certain Loader options during instantiation: 37 * 38 * $options = array( 39 * // The filename extension used for Mustache templates. Defaults to '.mustache' 40 * 'extension' => '.ms', 41 * ); 42 * 43 * @throws Mustache_Exception_RuntimeException if $baseDir does not exist. 44 * 45 * @param string $baseDir Base directory containing Mustache template files. 46 * @param array $options Array of Loader options (default: array()) 47 */ 48 public function __construct($baseDir, array $options = array()) 49 { 50 $this->baseDir = $baseDir; 51 52 if (strpos($this->baseDir, '://') === false) { 53 $this->baseDir = realpath($this->baseDir); 54 } 55 56 if (!is_dir($this->baseDir)) { 57 throw new Mustache_Exception_RuntimeException(sprintf('FilesystemLoader baseDir must be a directory: %s', $baseDir)); 58 } 59 60 if (array_key_exists('extension', $options)) { 61 if (empty($options['extension'])) { 62 $this->extension = ''; 63 } else { 64 $this->extension = '.' . ltrim($options['extension'], '.'); 65 } 66 } 67 } 68 69 /** 70 * Load a Template by name. 71 * 72 * $loader = new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'); 73 * $loader->load('admin/dashboard'); // loads "./views/admin/dashboard.mustache"; 74 * 75 * @param string $name 76 * 77 * @return string Mustache Template source 78 */ 79 public function load($name) 80 { 81 if (!isset($this->templates[$name])) { 82 $this->templates[$name] = $this->loadFile($name); 83 } 84 85 return $this->templates[$name]; 86 } 87 88 /** 89 * Helper function for loading a Mustache file by name. 90 * 91 * @throws Mustache_Exception_UnknownTemplateException If a template file is not found. 92 * 93 * @param string $name 94 * 95 * @return string Mustache Template source 96 */ 97 protected function loadFile($name) 98 { 99 $fileName = $this->getFileName($name); 100 101 if (!file_exists($fileName)) { 102 throw new Mustache_Exception_UnknownTemplateException($name); 103 } 104 105 return file_get_contents($fileName); 106 } 107 108 /** 109 * Helper function for getting a Mustache template file name. 110 * 111 * @param string $name 112 * 113 * @return string Template file name 114 */ 115 protected function getFileName($name) 116 { 117 $fileName = $this->baseDir . '/' . $name; 118 if (substr($fileName, 0 - strlen($this->extension)) !== $this->extension) { 119 $fileName .= $this->extension; 120 } 121 122 return $fileName; 123 } 124 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |