mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-13 10:56:38 +00:00
fixed a crash when an object with __toString() method is passed as template name
This commit is contained in:
@@ -47,7 +47,7 @@ class Twig_Loader_Array implements Twig_LoaderInterface
|
||||
*/
|
||||
public function setTemplate($name, $template)
|
||||
{
|
||||
$this->templates[$name] = $template;
|
||||
$this->templates[(string) $name] = $template;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -59,6 +59,7 @@ class Twig_Loader_Array implements Twig_LoaderInterface
|
||||
*/
|
||||
public function getSource($name)
|
||||
{
|
||||
$name = (string) $name;
|
||||
if (!isset($this->templates[$name])) {
|
||||
throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name));
|
||||
}
|
||||
@@ -75,6 +76,7 @@ class Twig_Loader_Array implements Twig_LoaderInterface
|
||||
*/
|
||||
public function getCacheKey($name)
|
||||
{
|
||||
$name = (string) $name;
|
||||
if (!isset($this->templates[$name])) {
|
||||
throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name));
|
||||
}
|
||||
@@ -90,6 +92,7 @@ class Twig_Loader_Array implements Twig_LoaderInterface
|
||||
*/
|
||||
public function isFresh($name, $time)
|
||||
{
|
||||
$name = (string) $name;
|
||||
if (!isset($this->templates[$name])) {
|
||||
throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name));
|
||||
}
|
||||
|
||||
@@ -68,4 +68,30 @@ class Twig_Tests_Loader_ArrayTest extends PHPUnit_Framework_TestCase
|
||||
|
||||
$loader->isFresh('foo', time());
|
||||
}
|
||||
|
||||
public function testTemplateReference()
|
||||
{
|
||||
$name = new Twig_Test_Loader_TemplateReference('foo');
|
||||
$loader = new Twig_Loader_Array(array('foo' => 'bar'));
|
||||
|
||||
$loader->getCacheKey($name);
|
||||
$loader->getSource($name);
|
||||
$loader->isFresh($name, time());
|
||||
$loader->setTemplate($name, 'foobar');
|
||||
}
|
||||
}
|
||||
|
||||
class Twig_Test_Loader_TemplateReference
|
||||
{
|
||||
private $name;
|
||||
|
||||
public function __construct($name)
|
||||
{
|
||||
$this->name = $name;
|
||||
}
|
||||
|
||||
public function __toString()
|
||||
{
|
||||
return $this->name;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user