converted item parameter of Twig_Template::getAttribute() to string

This commit is contained in:
Fabien Potencier
2011-11-07 14:18:48 +01:00
parent 40595b848e
commit aa6b835816
2 changed files with 17 additions and 0 deletions
+2
View File
@@ -308,6 +308,8 @@ abstract class Twig_Template implements Twig_TemplateInterface
*/
protected function getAttribute($object, $item, array $arguments = array(), $type = Twig_TemplateInterface::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false)
{
$item = (string) $item;
// array
if (Twig_TemplateInterface::METHOD_CALL !== $type) {
if ((is_array($object) && array_key_exists($item, $object))
+15
View File
@@ -68,6 +68,7 @@ class Twig_Tests_TemplateTest extends PHPUnit_Framework_TestCase
'defined' => 'defined',
'zero' => 0,
'null' => null,
'1' => 1,
);
$objectArray = new Twig_TemplateArrayAccessObject;
@@ -85,6 +86,8 @@ class Twig_Tests_TemplateTest extends PHPUnit_Framework_TestCase
array(true, 'defined', 'defined'),
array(false, null, 'undefined'),
array(true, 0, 'zero'),
array(true, 1, 1),
array(true, 1, 1.0),
array(true, null, 'null'),
);
$testObjects = array(
@@ -99,6 +102,11 @@ class Twig_Tests_TemplateTest extends PHPUnit_Framework_TestCase
$tests = array();
foreach ($testObjects as $testObject) {
foreach ($basicTests as $test) {
// properties cannot be numbers
if ($testObject[0] instanceof stdClass && is_numeric($test[2])) {
continue;
}
$tests[] = array($test[0], $test[1], $testObject[0], $test[2], array(), $testObject[1]);
}
}
@@ -154,6 +162,7 @@ class Twig_TemplateArrayAccessObject implements ArrayAccess
'defined' => 'defined',
'zero' => 0,
'null' => null,
'1' => 1,
);
public function offsetExists($name)
@@ -181,6 +190,7 @@ class Twig_TemplateMagicPropertyObject
'defined' => 'defined',
'zero' => 0,
'null' => null,
'1' => 1,
);
public function __isset($name)
@@ -201,6 +211,11 @@ class Twig_TemplateMethodObject
return 'defined';
}
public function get1()
{
return 1;
}
public function getZero()
{
return 0;