use Symfony\Components\Templating\Engine; use Symfony\Components\Templating\Renderer\Renderer; use Symfony\Components\Templating\Storage\Storage; use Symfony\Components\Templating\Loader\FilesystemLoader; $t = new LimeTest(1); class ProjectTemplateRenderer extends Renderer { public function getEngine() { return $this->engine; } public function evaluate(Storage $template, array $parameters = array()) { } } $loader = new FilesystemLoader(array(__DIR__.'/fixtures/templates/%name%.%renderer%')); $engine = new Engine($loader); $engine->set('foo', 'bar'); $engine->getHelperSet()->set(new SimpleHelper('foo'), 'bar'); // ->setEngine() $t->diag('->setEngine()'); $renderer = new ProjectTemplateRenderer(); $renderer->setEngine($engine); $t->ok($renderer->getEngine() === $engine, '->setEngine() sets the engine instance tied to this renderer');
require_once dirname(__FILE__) . '/lib/SimpleHelper.php'; $t = new lime_test(3); class ProjectTemplateRenderer extends sfTemplateRenderer { public function getEngine() { return $this->engine; } public function evaluate(sfTemplateStorage $template, array $parameters = array()) { } } $loader = new sfTemplateLoaderFilesystem(array(dirname(__FILE__) . '/fixtures/templates/%name%.%renderer%')); $engine = new sfTemplateEngine($loader); $engine->set('foo', 'bar'); $engine->getHelperSet()->set(new SimpleHelper('foo'), 'bar'); // ->setEngine() $t->diag('->setEngine()'); $renderer = new ProjectTemplateRenderer(); $renderer->setEngine($engine); $t->ok($renderer->getEngine() === $engine, '->setEngine() sets the engine instance tied to this renderer'); // __call() $t->diag('__call()'); $renderer = new ProjectTemplateRenderer(); $renderer->setEngine($engine); $t->is($renderer->get('foo'), 'bar', '__call() proxies to the embedded engine instance'); // __get() $t->diag('__get()'); $renderer = new ProjectTemplateRenderer(); $renderer->setEngine($engine); $t->is((string) $renderer->bar, 'foo', '__get() proxies to the embedded engine instance');
{ public $templates = array(); public function setTemplate($name, $template) { $this->templates[$name] = $template; } public function load($template, $renderer = 'php') { if (isset($this->templates[$template . '.' . $renderer])) { return new sfTemplateStorageString($this->templates[$template . '.' . $renderer]); } return false; } } $loader = new ProjectTemplateLoader(); $renderer = new ProjectTemplateRenderer(); // __construct() $t->diag('__construct()'); $engine = new ProjectTemplateEngine($loader); $t->is($engine->getLoader(), $loader, '__construct() takes a loader instance as its second first argument'); $t->is(array_keys($engine->getRenderers()), array('php'), '__construct() automatically registers a PHP renderer if none is given'); $t->ok($engine->getHelperSet() instanceof sfTemplateHelperSet, '__construct() automatically creates a helper set if none is given'); $engine = new ProjectTemplateEngine($loader, array('foo' => $renderer)); $t->is(array_keys($engine->getRenderers()), array('foo', 'php'), '__construct() takes an array of renderers as its third argument'); $t->ok($renderer->getEngine() === $engine, '__construct() registers itself on all renderers'); $engine = new ProjectTemplateEngine($loader, array('php' => $renderer)); $t->ok($engine->getRenderers() === array('php' => $renderer), '__construct() can overridde the default PHP renderer'); $engine = new ProjectTemplateEngine($loader, array(), $helperSet = new sfTemplateHelperSet()); $t->ok($engine->getHelperSet() === $helperSet, '__construct() takes a helper set as its third argument'); // ->getHelperSet() ->setHelperSet() $t->diag('->getHelperSet() ->setHelperSet()');