fixed a regression when using a number in template attributes (closes #733)
authorFabien Potencier <fabien.potencier@gmail.com>
Wed, 23 May 2012 05:50:33 +0000 (07:50 +0200)
committerFabien Potencier <fabien.potencier@gmail.com>
Wed, 23 May 2012 05:50:43 +0000 (07:50 +0200)
CHANGELOG
lib/Twig/Template.php
test/Twig/Tests/Fixtures/regression/strings_like_numbers.test [new file with mode: 0644]

index 5f4d0b8..eb53dc1 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
 * 1.8.2 (2012-XX-XX)
 
+ * fixed a regression when using a number in template attributes
  * fixed compiler when mbstring.func_overload is set to 2
 
 * 1.8.1 (2012-05-17)
index 1693596..7ecdba4 100644 (file)
@@ -326,7 +326,7 @@ 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 = is_numeric($item) ? (int) $item : (string) $item;
+        $item = ctype_digit((string) $item) ? (int) $item : (string) $item;
 
         // array
         if (Twig_TemplateInterface::METHOD_CALL !== $type) {
diff --git a/test/Twig/Tests/Fixtures/regression/strings_like_numbers.test b/test/Twig/Tests/Fixtures/regression/strings_like_numbers.test
new file mode 100644 (file)
index 0000000..e18e110
--- /dev/null
@@ -0,0 +1,8 @@
+--TEST--
+Twig does not confuse strings with integers in getAttribute()
+--TEMPLATE--
+{{ hash['2e2'] }}
+--DATA--
+return array('hash' => array('2e2' => 'works'))
+--EXPECT--
+works