Merge pull request #166 from amitsnyderman/master
Extract cache interface
This commit is contained in:
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Mustache.php.
|
||||||
|
*
|
||||||
|
* (c) 2012 Justin Hileman
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mustache Cache interface.
|
||||||
|
*
|
||||||
|
* Interface for caching and loading Mustache_Template classes
|
||||||
|
* generated by the Mustache_Compiler.
|
||||||
|
*/
|
||||||
|
interface Mustache_Cache
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Load a compiled Mustache_Template class from cache.
|
||||||
|
*
|
||||||
|
* @param string $key
|
||||||
|
* @return boolean indicates successfully class load
|
||||||
|
*/
|
||||||
|
public function load($key);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cache and load a compiled Mustache_Template class.
|
||||||
|
*
|
||||||
|
* @param string $key
|
||||||
|
* @param string $value
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function cache($key, $value);
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Mustache.php.
|
||||||
|
*
|
||||||
|
* (c) 2012 Justin Hileman
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Abstract Mustache Cache class.
|
||||||
|
*
|
||||||
|
* Provides logging support to child implementations.
|
||||||
|
*
|
||||||
|
* @abstract
|
||||||
|
*/
|
||||||
|
abstract class Mustache_Cache_AbstractCache implements Mustache_Cache
|
||||||
|
{
|
||||||
|
private $logger = null;
|
||||||
|
|
||||||
|
public function getLogger()
|
||||||
|
{
|
||||||
|
return $this->logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setLogger($logger = null)
|
||||||
|
{
|
||||||
|
if ($logger !== null && !($logger instanceof Mustache_Logger || is_a($logger, 'Psr\\Log\\LoggerInterface'))) {
|
||||||
|
throw new Mustache_Exception_InvalidArgumentException('Expected an instance of Mustache_Logger or Psr\\Log\\LoggerInterface.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->logger = $logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function log($level, $message, array $context = array())
|
||||||
|
{
|
||||||
|
if (isset($this->logger)) {
|
||||||
|
$this->logger->log($level, $message, $context);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Mustache.php.
|
||||||
|
*
|
||||||
|
* (c) 2012 Justin Hileman
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mustache Cache filesystem implementation.
|
||||||
|
*
|
||||||
|
* A FilesystemCache instance caches Mustache Template classes from the filesystem by name:
|
||||||
|
*
|
||||||
|
* $cache = new Mustache_Cache_FilesystemCache(dirname(__FILE__).'/cache');
|
||||||
|
* $cache->cache($className, $compiledSource);
|
||||||
|
*
|
||||||
|
* Benefits from any opcode caching that may be setup in your environment.
|
||||||
|
*/
|
||||||
|
class Mustache_Cache_FilesystemCache extends Mustache_Cache_AbstractCache
|
||||||
|
{
|
||||||
|
private $baseDir;
|
||||||
|
private $fileMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filesystem cache constructor.
|
||||||
|
*
|
||||||
|
* @param string $baseDir Directory for compiled templates.
|
||||||
|
* @param int $fileMode Override default permissions for cache files. Defaults to using the system-defined umask.
|
||||||
|
*/
|
||||||
|
public function __construct($baseDir, $fileMode = null)
|
||||||
|
{
|
||||||
|
$this->baseDir = $baseDir;
|
||||||
|
$this->fileMode = $fileMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load the class from cache using `require_once`.
|
||||||
|
*
|
||||||
|
* @param string $key
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function load($key)
|
||||||
|
{
|
||||||
|
$fileName = $this->getCacheFilename($key);
|
||||||
|
if (!is_file($fileName)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once $fileName;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cache and load the compiled class
|
||||||
|
*
|
||||||
|
* @param string $key
|
||||||
|
* @param string $value
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function cache($key, $value)
|
||||||
|
{
|
||||||
|
$fileName = $this->getCacheFilename($key);
|
||||||
|
|
||||||
|
$this->log(
|
||||||
|
Mustache_Logger::DEBUG,
|
||||||
|
'Writing to template cache: "{fileName}"',
|
||||||
|
array('fileName' => $fileName)
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->writeFile($fileName, $value);
|
||||||
|
$this->load($key);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the cache filename.
|
||||||
|
* Subclasses should override for custom cache directory structures.
|
||||||
|
*
|
||||||
|
* @param string $name
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function getCacheFilename($name)
|
||||||
|
{
|
||||||
|
return sprintf('%s/%s.php', $this->baseDir, $name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create cache directory
|
||||||
|
*
|
||||||
|
* @param string $fileName
|
||||||
|
* @return string
|
||||||
|
*
|
||||||
|
* @throws Mustache_Exception_RuntimeException If unable to create directory
|
||||||
|
*/
|
||||||
|
private function buildDirectoryForFilename($fileName)
|
||||||
|
{
|
||||||
|
$dirName = dirname($fileName);
|
||||||
|
if (!is_dir($dirName)) {
|
||||||
|
$this->log(
|
||||||
|
Mustache_Logger::INFO,
|
||||||
|
'Creating Mustache template cache directory: "{dirName}"',
|
||||||
|
array('dirName' => $dirName)
|
||||||
|
);
|
||||||
|
|
||||||
|
@mkdir($dirName, 0777, true);
|
||||||
|
if (!is_dir($dirName)) {
|
||||||
|
throw new Mustache_Exception_RuntimeException(sprintf('Failed to create cache directory "%s".', $dirName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $dirName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write cache file
|
||||||
|
*
|
||||||
|
* @param string $fileName
|
||||||
|
* @param string $value
|
||||||
|
* @return void
|
||||||
|
*
|
||||||
|
* @throws Mustache_Exception_RuntimeException If unable to write file
|
||||||
|
*/
|
||||||
|
private function writeFile($fileName, $value)
|
||||||
|
{
|
||||||
|
$dirName = $this->buildDirectoryForFilename($fileName);
|
||||||
|
|
||||||
|
$this->log(
|
||||||
|
Mustache_Logger::DEBUG,
|
||||||
|
'Caching compiled template to "{fileName}"',
|
||||||
|
array('fileName' => $fileName)
|
||||||
|
);
|
||||||
|
|
||||||
|
$tempFile = tempnam($dirName, basename($fileName));
|
||||||
|
if (false !== @file_put_contents($tempFile, $value)) {
|
||||||
|
if (@rename($tempFile, $fileName)) {
|
||||||
|
$mode = isset($this->fileMode) ? $this->fileMode : (0666 & ~umask());
|
||||||
|
@chmod($fileName, $mode);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->log(
|
||||||
|
Mustache_Logger::ERROR,
|
||||||
|
'Unable to rename Mustache temp cache file: "{tempName}" -> "{fileName}"',
|
||||||
|
array('tempName' => $tempFile, 'fileName' => $fileName)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Mustache_Exception_RuntimeException(sprintf('Failed to write cache file "%s".', $fileName));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Mustache.php.
|
||||||
|
*
|
||||||
|
* (c) 2012 Justin Hileman
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mustache Cache in-memory implementation.
|
||||||
|
*
|
||||||
|
* In-memory implementation useful during development.
|
||||||
|
* Not recommended for production use.
|
||||||
|
*/
|
||||||
|
class Mustache_Cache_NoopCache extends Mustache_Cache_AbstractCache
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Loads nothing. Move along.
|
||||||
|
*
|
||||||
|
* @param string $key
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public function load($key)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads the compiled Mustache Template class without caching.
|
||||||
|
*
|
||||||
|
* @param string $key
|
||||||
|
* @param string $compiled
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function cache($key, $compiled)
|
||||||
|
{
|
||||||
|
$this->log(
|
||||||
|
Mustache_Logger::WARNING,
|
||||||
|
'Template cache disabled, evaluating "{className}" class at runtime',
|
||||||
|
array('className' => $key)
|
||||||
|
);
|
||||||
|
eval("?>".$compiled);
|
||||||
|
}
|
||||||
|
}
|
||||||
+47
-93
@@ -33,8 +33,7 @@ class Mustache_Engine
|
|||||||
|
|
||||||
// Environment
|
// Environment
|
||||||
private $templateClassPrefix = '__Mustache_';
|
private $templateClassPrefix = '__Mustache_';
|
||||||
private $cache = null;
|
private $cache;
|
||||||
private $cacheFileMode = null;
|
|
||||||
private $loader;
|
private $loader;
|
||||||
private $partialsLoader;
|
private $partialsLoader;
|
||||||
private $helpers;
|
private $helpers;
|
||||||
@@ -53,7 +52,8 @@ class Mustache_Engine
|
|||||||
* // The class prefix for compiled templates. Defaults to '__Mustache_'.
|
* // The class prefix for compiled templates. Defaults to '__Mustache_'.
|
||||||
* 'template_class_prefix' => '__MyTemplates_',
|
* 'template_class_prefix' => '__MyTemplates_',
|
||||||
*
|
*
|
||||||
* // A cache directory for compiled templates. Mustache will not cache templates unless this is set
|
* // A Mustache cache instance or a cache directory string for compiled templates.
|
||||||
|
* // Mustache will not cache templates unless this is set
|
||||||
* 'cache' => dirname(__FILE__).'/tmp/cache/mustache',
|
* 'cache' => dirname(__FILE__).'/tmp/cache/mustache',
|
||||||
*
|
*
|
||||||
* // Override default permissions for cache files. Defaults to using the system-defined umask. It is
|
* // Override default permissions for cache files. Defaults to using the system-defined umask. It is
|
||||||
@@ -112,11 +112,14 @@ class Mustache_Engine
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (isset($options['cache'])) {
|
if (isset($options['cache'])) {
|
||||||
$this->cache = $options['cache'];
|
$cache = $options['cache'];
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($options['cache_file_mode'])) {
|
if (is_string($cache)) {
|
||||||
$this->cacheFileMode = $options['cache_file_mode'];
|
$mode = isset($options['cache_file_mode']) ? $options['cache_file_mode'] : null;
|
||||||
|
$cache = new Mustache_Cache_FilesystemCache($cache, $mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->setCache($cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($options['loader'])) {
|
if (isset($options['loader'])) {
|
||||||
@@ -388,6 +391,10 @@ class Mustache_Engine
|
|||||||
throw new Mustache_Exception_InvalidArgumentException('Expected an instance of Mustache_Logger or Psr\\Log\\LoggerInterface.');
|
throw new Mustache_Exception_InvalidArgumentException('Expected an instance of Mustache_Logger or Psr\\Log\\LoggerInterface.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->getCache()->getLogger() === null) {
|
||||||
|
$this->getCache()->setLogger($logger);
|
||||||
|
}
|
||||||
|
|
||||||
$this->logger = $logger;
|
$this->logger = $logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -479,6 +486,36 @@ class Mustache_Engine
|
|||||||
return $this->compiler;
|
return $this->compiler;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the Mustache Cache instance.
|
||||||
|
*
|
||||||
|
* @param Mustache_Cache $cache
|
||||||
|
*/
|
||||||
|
public function setCache(Mustache_Cache $cache)
|
||||||
|
{
|
||||||
|
if (isset($this->logger) && $cache->getLogger() === null) {
|
||||||
|
$cache->setLogger($this->getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->cache = $cache;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current Mustache Cache instance.
|
||||||
|
*
|
||||||
|
* If no Cache instance has been explicitly specified, this method will instantiate and return a new one.
|
||||||
|
*
|
||||||
|
* @return Mustache_Cache
|
||||||
|
*/
|
||||||
|
public function getCache()
|
||||||
|
{
|
||||||
|
if (!isset($this->cache)) {
|
||||||
|
$this->setCache(new Mustache_Cache_NoopCache());
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->cache;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper method to generate a Mustache template class.
|
* Helper method to generate a Mustache template class.
|
||||||
*
|
*
|
||||||
@@ -580,26 +617,9 @@ class Mustache_Engine
|
|||||||
|
|
||||||
if (!isset($this->templates[$className])) {
|
if (!isset($this->templates[$className])) {
|
||||||
if (!class_exists($className, false)) {
|
if (!class_exists($className, false)) {
|
||||||
if ($fileName = $this->getCacheFilename($source)) {
|
if (!$this->getCache()->load($className)) {
|
||||||
if (!is_file($fileName)) {
|
$compiled = $this->compile($source);
|
||||||
$this->log(
|
$this->getCache()->cache($className, $compiled);
|
||||||
Mustache_Logger::DEBUG,
|
|
||||||
'Writing "{className}" class to template cache: "{fileName}"',
|
|
||||||
array('className' => $className, 'fileName' => $fileName)
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->writeCacheFile($fileName, $this->compile($source));
|
|
||||||
}
|
|
||||||
|
|
||||||
require_once $fileName;
|
|
||||||
} else {
|
|
||||||
$this->log(
|
|
||||||
Mustache_Logger::WARNING,
|
|
||||||
'Template cache disabled, evaluating "{className}" class at runtime',
|
|
||||||
array('className' => $className)
|
|
||||||
);
|
|
||||||
|
|
||||||
eval('?>'.$this->compile($source));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -666,72 +686,6 @@ class Mustache_Engine
|
|||||||
return $this->getCompiler()->compile($source, $tree, $name, isset($this->escape), $this->charset, $this->strictCallables, $this->entityFlags);
|
return $this->getCompiler()->compile($source, $tree, $name, isset($this->escape), $this->charset, $this->strictCallables, $this->entityFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper method to generate a Mustache Template class cache filename.
|
|
||||||
*
|
|
||||||
* @param string $source
|
|
||||||
*
|
|
||||||
* @return string Mustache Template class cache filename
|
|
||||||
*/
|
|
||||||
private function getCacheFilename($source)
|
|
||||||
{
|
|
||||||
if ($this->cache) {
|
|
||||||
return sprintf('%s/%s.php', $this->cache, $this->getTemplateClassName($source));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper method to dump a generated Mustache Template subclass to the file cache.
|
|
||||||
*
|
|
||||||
* @throws Mustache_Exception_RuntimeException if unable to create the cache directory or write to $fileName.
|
|
||||||
*
|
|
||||||
* @param string $fileName
|
|
||||||
* @param string $source
|
|
||||||
*
|
|
||||||
* @codeCoverageIgnore
|
|
||||||
*/
|
|
||||||
private function writeCacheFile($fileName, $source)
|
|
||||||
{
|
|
||||||
$dirName = dirname($fileName);
|
|
||||||
if (!is_dir($dirName)) {
|
|
||||||
$this->log(
|
|
||||||
Mustache_Logger::INFO,
|
|
||||||
'Creating Mustache template cache directory: "{dirName}"',
|
|
||||||
array('dirName' => $dirName)
|
|
||||||
);
|
|
||||||
|
|
||||||
@mkdir($dirName, 0777, true);
|
|
||||||
if (!is_dir($dirName)) {
|
|
||||||
throw new Mustache_Exception_RuntimeException(sprintf('Failed to create cache directory "%s".', $dirName));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->log(
|
|
||||||
Mustache_Logger::DEBUG,
|
|
||||||
'Caching compiled template to "{fileName}"',
|
|
||||||
array('fileName' => $fileName)
|
|
||||||
);
|
|
||||||
|
|
||||||
$tempFile = tempnam($dirName, basename($fileName));
|
|
||||||
if (false !== @file_put_contents($tempFile, $source)) {
|
|
||||||
if (@rename($tempFile, $fileName)) {
|
|
||||||
$mode = isset($this->cacheFileMode) ? $this->cacheFileMode : (0666 & ~umask());
|
|
||||||
@chmod($fileName, $mode);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->log(
|
|
||||||
Mustache_Logger::ERROR,
|
|
||||||
'Unable to rename Mustache temp cache file: "{tempName}" -> "{fileName}"',
|
|
||||||
array('tempName' => $tempFile, 'fileName' => $fileName)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
throw new Mustache_Exception_RuntimeException(sprintf('Failed to write cache file "%s".', $fileName));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a log record if logging is enabled.
|
* Add a log record if logging is enabled.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of Mustache.php.
|
||||||
|
*
|
||||||
|
* (c) 2012 Justin Hileman
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group functional
|
||||||
|
*/
|
||||||
|
class Mustache_Test_Cache_FilesystemCacheTest extends PHPUnit_Framework_TestCase
|
||||||
|
{
|
||||||
|
private static $tempDir;
|
||||||
|
|
||||||
|
public static function setUpBeforeClass()
|
||||||
|
{
|
||||||
|
self::$tempDir = sys_get_temp_dir() . '/mustache_test';
|
||||||
|
if (file_exists(self::$tempDir)) {
|
||||||
|
self::rmdir(self::$tempDir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCacheGetNone()
|
||||||
|
{
|
||||||
|
$key = 'some key';
|
||||||
|
$cache = new Mustache_Cache_FilesystemCache(self::$tempDir);;
|
||||||
|
$loaded = $cache->load($key);
|
||||||
|
|
||||||
|
$this->assertFalse($loaded);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCachePut()
|
||||||
|
{
|
||||||
|
$key = 'some key';
|
||||||
|
$value = '<?php /* some value */';
|
||||||
|
$cache = new Mustache_Cache_FilesystemCache(self::$tempDir);;
|
||||||
|
$cache->cache($key, $value);
|
||||||
|
$loaded = $cache->load($key);
|
||||||
|
|
||||||
|
$this->assertTrue($loaded);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function rmdir($path)
|
||||||
|
{
|
||||||
|
$path = rtrim($path, '/').'/';
|
||||||
|
$handle = opendir($path);
|
||||||
|
while (($file = readdir($handle)) !== false) {
|
||||||
|
if ($file == '.' || $file == '..') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$fullpath = $path.$file;
|
||||||
|
if (is_dir($fullpath)) {
|
||||||
|
self::rmdir($fullpath);
|
||||||
|
} else {
|
||||||
|
unlink($fullpath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
closedir($handle);
|
||||||
|
rmdir($path);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -58,6 +58,7 @@ class Mustache_Test_EngineTest extends PHPUnit_Framework_TestCase
|
|||||||
$this->assertTrue($mustache->hasHelper('foo'));
|
$this->assertTrue($mustache->hasHelper('foo'));
|
||||||
$this->assertTrue($mustache->hasHelper('bar'));
|
$this->assertTrue($mustache->hasHelper('bar'));
|
||||||
$this->assertFalse($mustache->hasHelper('baz'));
|
$this->assertFalse($mustache->hasHelper('baz'));
|
||||||
|
$this->assertInstanceOf('Mustache_Cache_FilesystemCache', $mustache->getCache());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getFoo()
|
public static function getFoo()
|
||||||
@@ -95,6 +96,7 @@ class Mustache_Test_EngineTest extends PHPUnit_Framework_TestCase
|
|||||||
$parser = new Mustache_Parser;
|
$parser = new Mustache_Parser;
|
||||||
$compiler = new Mustache_Compiler;
|
$compiler = new Mustache_Compiler;
|
||||||
$mustache = new Mustache_Engine;
|
$mustache = new Mustache_Engine;
|
||||||
|
$cache = new Mustache_Cache_FilesystemCache(self::$tempDir);
|
||||||
|
|
||||||
$this->assertNotSame($logger, $mustache->getLogger());
|
$this->assertNotSame($logger, $mustache->getLogger());
|
||||||
$mustache->setLogger($logger);
|
$mustache->setLogger($logger);
|
||||||
@@ -119,6 +121,10 @@ class Mustache_Test_EngineTest extends PHPUnit_Framework_TestCase
|
|||||||
$this->assertNotSame($compiler, $mustache->getCompiler());
|
$this->assertNotSame($compiler, $mustache->getCompiler());
|
||||||
$mustache->setCompiler($compiler);
|
$mustache->setCompiler($compiler);
|
||||||
$this->assertSame($compiler, $mustache->getCompiler());
|
$this->assertSame($compiler, $mustache->getCompiler());
|
||||||
|
|
||||||
|
$this->assertNotSame($cache, $mustache->getCache());
|
||||||
|
$mustache->setCache($cache);
|
||||||
|
$this->assertSame($cache, $mustache->getCache());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -134,10 +140,8 @@ class Mustache_Test_EngineTest extends PHPUnit_Framework_TestCase
|
|||||||
$source = '{{ foo }}';
|
$source = '{{ foo }}';
|
||||||
$template = $mustache->loadTemplate($source);
|
$template = $mustache->loadTemplate($source);
|
||||||
$className = $mustache->getTemplateClassName($source);
|
$className = $mustache->getTemplateClassName($source);
|
||||||
$fileName = self::$tempDir . '/' . $className . '.php';
|
|
||||||
$this->assertInstanceOf($className, $template);
|
$this->assertInstanceOf($className, $template);
|
||||||
$this->assertFileExists($fileName);
|
|
||||||
$this->assertContains("\nclass $className extends Mustache_Template", file_get_contents($fileName));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user