Skip to content

Commit bc2ca8f

Browse files
committed
made PHP renderer optional in Templating
1 parent f2ac2a4 commit bc2ca8f

File tree

3 files changed

+18
-20
lines changed

3 files changed

+18
-20
lines changed

src/Symfony/Bundle/FrameworkBundle/Resources/config/templating.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
<parameter key="templating.assets.version">null</parameter>
2323
<parameter key="templating.assets.base_urls" type="collection"></parameter>
2424
<parameter key="templating.name_converter.class">Symfony\Bundle\FrameworkBundle\Templating\TemplateNameConverter</parameter>
25+
<parameter key="templating.renderer.php.class">Symfony\Component\Templating\Renderer\PhpRenderer</parameter>
2526
<parameter key="debug.file_link_format">null</parameter>
2627
</parameters>
2728

@@ -103,6 +104,10 @@
103104
<argument type="service" id="service_container" />
104105
</service>
105106

107+
<service id="templating.renderer.php" class="%templating.renderer.php.class%">
108+
<tag name="templating.renderer" alias="php" />
109+
</service>
110+
106111
<service id="templating.loader" alias="templating.loader.filesystem" />
107112

108113
<service id="templating" alias="templating.engine" />

src/Symfony/Component/Templating/Engine.php

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace Symfony\Component\Templating;
44

55
use Symfony\Component\Templating\Loader\LoaderInterface;
6-
use Symfony\Component\Templating\Renderer\PhpRenderer;
76
use Symfony\Component\Templating\Renderer\RendererInterface;
87
use Symfony\Component\Templating\Helper\HelperInterface;
98

@@ -38,8 +37,8 @@ class Engine implements \ArrayAccess
3837
/**
3938
* Constructor.
4039
*
41-
* @param LoaderInterface $loader A loader instance
42-
* @param array $helpers A array of helper instances
40+
* @param LoaderInterface $loader A loader instance
41+
* @param array $helpers An array of helper instances
4342
*/
4443
public function __construct(LoaderInterface $loader, array $helpers = array())
4544
{
@@ -50,26 +49,21 @@ public function __construct(LoaderInterface $loader, array $helpers = array())
5049
$this->charset = 'UTF-8';
5150
$this->cache = array();
5251
$this->globals = array();
52+
$this->renderers = array();
5353

5454
$this->addHelpers($helpers);
5555

5656
$this->initializeEscapers();
57-
5857
foreach ($this->escapers as $context => $escaper) {
5958
$this->setEscaper($context, $escaper);
6059
}
6160
}
6261

6362
public function setRenderers(array $renderers = array())
6463
{
65-
$this->renderers = $renderers;
66-
67-
if (!isset($this->renderers['php'])) {
68-
$this->renderers['php'] = new PhpRenderer();
69-
}
70-
71-
foreach ($this->renderers as $renderer) {
72-
$renderer->setEngine($this);
64+
$this->renderers = array();
65+
foreach ($renderers as $name => $renderer) {
66+
$this->setRenderer($name, $renderer);
7367
}
7468
}
7569

tests/Symfony/Tests/Component/Templating/EngineTest.php

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,8 @@ public function testSetRenderers()
4141
{
4242
$engine = new ProjectTemplateEngine(self::$loader);
4343
$engine->setRenderers(array('foo' => self::$renderer));
44-
$this->assertEquals(array('foo', 'php'), array_keys($engine->getRenderers()), '__construct() takes an array of renderers as its third argument');
45-
$this->assertTrue(self::$renderer->getEngine() === $engine, '__construct() registers itself on all renderers');
46-
47-
$engine = new ProjectTemplateEngine(self::$loader);
48-
$engine->setRenderers(array('php' => self::$renderer));
49-
$this->assertTrue($engine->getRenderers() === array('php' => self::$renderer), '__construct() can overridde the default PHP renderer');
44+
$this->assertEquals(array('foo'), array_keys($engine->getRenderers()));
45+
$this->assertTrue(self::$renderer->getEngine() === $engine, 'setRenderers() registers itself on all renderers');
5046
}
5147

5248
public function testOffsetGet()
@@ -106,13 +102,15 @@ public function testExtendRender()
106102
$this->assertEquals('The template "foo:name" does not exist (renderer: name).', $e->getMessage(), '->render() throws an InvalidArgumentException if no renderer is registered for the given renderer');
107103
}
108104

109-
$engine = new ProjectTemplateEngine(self::$loader, array(), array(new SlotsHelper()));
105+
$engine = new ProjectTemplateEngine(self::$loader, array(new SlotsHelper()));
106+
$engine->setRenderer('php', new PhpRenderer());
110107
$engine->set(new \SimpleHelper('bar'));
111108
self::$loader->setTemplate('foo.php', '<?php $view->extend("layout"); echo $view[\'foo\'].$foo ?>');
112109
self::$loader->setTemplate('layout.php', '-<?php echo $view[\'slots\']->get("_content") ?>-');
113110
$this->assertEquals('-barfoo-', $engine->render('foo', array('foo' => 'foo')), '->render() uses the decorator to decorate the template');
114111

115-
$engine = new ProjectTemplateEngine(self::$loader, array(), array(new SlotsHelper()));
112+
$engine = new ProjectTemplateEngine(self::$loader, array(new SlotsHelper()));
113+
$engine->setRenderer('php', new PhpRenderer());
116114
$engine->set(new \SimpleHelper('bar'));
117115
self::$loader->setTemplate('bar.php', 'bar');
118116
self::$loader->setTemplate('foo.php', '<?php $view->extend("layout"); echo $foo ?>');
@@ -149,6 +147,7 @@ public function testGlobalVariables()
149147
public function testGlobalsGetPassedToTemplate()
150148
{
151149
$engine = new ProjectTemplateEngine(self::$loader);
150+
$engine->setRenderer('php', new PhpRenderer());
152151
$engine->addGlobal('global', 'global variable');
153152

154153
self::$loader->setTemplate('global.php', '<?php echo $global; ?>');

0 commit comments

Comments
 (0)