[Templating] removed CompilableLoaderInterface and fixed unit tests
This commit is contained in:
parent
6ea878242b
commit
46a8a1752f
@ -61,10 +61,6 @@ class CacheLoader extends Loader
|
|||||||
$file = substr($tmp, 2);
|
$file = substr($tmp, 2);
|
||||||
$path = $dir.DIRECTORY_SEPARATOR.$file;
|
$path = $dir.DIRECTORY_SEPARATOR.$file;
|
||||||
|
|
||||||
if ($this->loader instanceof CompilableLoaderInterface) {
|
|
||||||
$options['renderer'] = 'php';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (file_exists($path)) {
|
if (file_exists($path)) {
|
||||||
if (null !== $this->debugger) {
|
if (null !== $this->debugger) {
|
||||||
$this->debugger->log(sprintf('Fetching template "%s" from cache', $template));
|
$this->debugger->log(sprintf('Fetching template "%s" from cache', $template));
|
||||||
@ -79,10 +75,6 @@ class CacheLoader extends Loader
|
|||||||
|
|
||||||
$content = $storage->getContent();
|
$content = $storage->getContent();
|
||||||
|
|
||||||
if ($this->loader instanceof CompilableLoaderInterface) {
|
|
||||||
$content = $this->loader->compile($content);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!file_exists($dir)) {
|
if (!file_exists($dir)) {
|
||||||
mkdir($dir, 0777, true);
|
mkdir($dir, 0777, true);
|
||||||
}
|
}
|
||||||
|
@ -1,34 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace Symfony\Components\Templating\Loader;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This file is part of the Symfony package.
|
|
||||||
*
|
|
||||||
* (c) Fabien Potencier <fabien.potencier@symfony-project.com>
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view the LICENSE
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* CompilableLoaderInterface is the interface a template loader must implement
|
|
||||||
* if the templates are compilable.
|
|
||||||
*
|
|
||||||
* @package Symfony
|
|
||||||
* @subpackage Components_Templating
|
|
||||||
* @author Fabien Potencier <fabien.potencier@symfony-project.com>
|
|
||||||
*/
|
|
||||||
interface CompilableLoaderInterface
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Compiles a template.
|
|
||||||
*
|
|
||||||
* @param string $template The template to compile
|
|
||||||
*
|
|
||||||
* @return string The compiled template
|
|
||||||
*
|
|
||||||
* @throws \Exception if the template is not compilable
|
|
||||||
*/
|
|
||||||
public function compile($template);
|
|
||||||
}
|
|
@ -15,7 +15,6 @@ require_once __DIR__.'/../../../../lib/SymfonyTests/Components/Templating/Simple
|
|||||||
|
|
||||||
use Symfony\Components\Templating\Engine;
|
use Symfony\Components\Templating\Engine;
|
||||||
use Symfony\Components\Templating\Loader\Loader;
|
use Symfony\Components\Templating\Loader\Loader;
|
||||||
use Symfony\Components\Templating\Loader\CompilableLoaderInterface;
|
|
||||||
use Symfony\Components\Templating\Renderer\Renderer;
|
use Symfony\Components\Templating\Renderer\Renderer;
|
||||||
use Symfony\Components\Templating\Renderer\PhpRenderer;
|
use Symfony\Components\Templating\Renderer\PhpRenderer;
|
||||||
use Symfony\Components\Templating\Storage\Storage;
|
use Symfony\Components\Templating\Storage\Storage;
|
||||||
@ -115,10 +114,6 @@ class EngineTest extends \PHPUnit_Framework_TestCase
|
|||||||
self::$loader->setTemplate('foo.php', '<?php $view->extend("layout"); echo $foo ?>');
|
self::$loader->setTemplate('foo.php', '<?php $view->extend("layout"); echo $foo ?>');
|
||||||
self::$loader->setTemplate('layout.php', '<?php echo $view->render("bar") ?>-<?php echo $view->slots->get("_content") ?>-');
|
self::$loader->setTemplate('layout.php', '<?php echo $view->render("bar") ?>-<?php echo $view->slots->get("_content") ?>-');
|
||||||
$this->assertEquals('bar-foo-', $engine->render('foo', array('foo' => 'foo', 'bar' => 'bar')), '->render() supports render() calls in templates');
|
$this->assertEquals('bar-foo-', $engine->render('foo', array('foo' => 'foo', 'bar' => 'bar')), '->render() supports render() calls in templates');
|
||||||
|
|
||||||
// compilable templates
|
|
||||||
$engine = new ProjectTemplateEngine(new CompilableTemplateLoader(), array('foo' => new FooTemplateRenderer()));
|
|
||||||
$this->assertEquals('foo', $engine->render('index'), '->load() takes into account the renderer embedded in the Storage instance if not null');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEscape()
|
public function testEscape()
|
||||||
@ -176,18 +171,10 @@ class ProjectTemplateLoader extends Loader
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
class CompilableTemplateLoader extends Loader implements CompilableLoaderInterface
|
public function isFresh($template, array $options = array(), $time)
|
||||||
{
|
|
||||||
public function load($template, array $options = array())
|
|
||||||
{
|
{
|
||||||
return new StringStorage($template, 'foo');
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
public function compile($template)
|
|
||||||
{
|
|
||||||
return 'COMPILED';
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@ require_once __DIR__.'/../../../../../lib/SymfonyTests/Components/Templating/Pro
|
|||||||
|
|
||||||
use Symfony\Components\Templating\Loader\Loader;
|
use Symfony\Components\Templating\Loader\Loader;
|
||||||
use Symfony\Components\Templating\Loader\CacheLoader;
|
use Symfony\Components\Templating\Loader\CacheLoader;
|
||||||
use Symfony\Components\Templating\Loader\CompilableLoaderInterface;
|
|
||||||
use Symfony\Components\Templating\Storage\StringStorage;
|
use Symfony\Components\Templating\Storage\StringStorage;
|
||||||
|
|
||||||
class CacheLoaderTest extends \PHPUnit_Framework_TestCase
|
class CacheLoaderTest extends \PHPUnit_Framework_TestCase
|
||||||
@ -39,20 +38,6 @@ class CacheLoaderTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->assertTrue($debugger->hasMessage('Storing template'), '->load() logs a "Storing template" message if the template is found');
|
$this->assertTrue($debugger->hasMessage('Storing template'), '->load() logs a "Storing template" message if the template is found');
|
||||||
$loader->load('index');
|
$loader->load('index');
|
||||||
$this->assertTrue($debugger->hasMessage('Fetching template'), '->load() logs a "Storing template" message if the template is fetched from cache');
|
$this->assertTrue($debugger->hasMessage('Fetching template'), '->load() logs a "Storing template" message if the template is fetched from cache');
|
||||||
|
|
||||||
// load() template compilation
|
|
||||||
$dir = sys_get_temp_dir().DIRECTORY_SEPARATOR.rand(111111, 999999);
|
|
||||||
mkdir($dir, 0777, true);
|
|
||||||
|
|
||||||
$loader = new ProjectTemplateLoader(new CompilableTemplateLoader(), $dir);
|
|
||||||
$loader->setDebugger($debugger = new \ProjectTemplateDebugger());
|
|
||||||
$template = $loader->load('special', array('renderer' => 'comp'));
|
|
||||||
$this->assertTrue($debugger->hasMessage('Storing template'), '->load() logs a "Storing template" message if the template is found');
|
|
||||||
$this->assertEquals('php', $template->getRenderer(), '->load() changes the renderer to php if the template is compilable');
|
|
||||||
|
|
||||||
$template = $loader->load('special', array('renderer' => 'comp'));
|
|
||||||
$this->assertTrue($debugger->hasMessage('Fetching template'), '->load() logs a "Storing template" message if the template is fetched from cache');
|
|
||||||
$this->assertEquals('php', $template->getRenderer(), '->load() changes the renderer to php if the template is compilable');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,12 +74,9 @@ class ProjectTemplateLoaderVar extends Loader
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
class CompilableTemplateLoader extends ProjectTemplateLoaderVar implements CompilableLoaderInterface
|
public function isFresh($template, array $options = array(), $time)
|
||||||
{
|
|
||||||
public function compile($template)
|
|
||||||
{
|
{
|
||||||
return preg_replace('/{{\s*([a-zA-Z0-9_]+)\s*}}/', '<?php echo $$1 ?>', $template);
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,4 +35,9 @@ class ProjectTemplateLoader4 extends Loader
|
|||||||
{
|
{
|
||||||
return $this->debugger;
|
return $this->debugger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function isFresh($template, array $options = array(), $time)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user