mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-16 12:26:30 +00:00
Updated exception messages for null vars in Twig_Template::getAttribute().
This commit is contained in:
+40
-12
@@ -779,12 +779,18 @@ PHP_FUNCTION(twig_template_get_attributes)
|
|||||||
$message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface', $item, get_class($object));
|
$message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface', $item, get_class($object));
|
||||||
} elseif (is_array($object)) {
|
} elseif (is_array($object)) {
|
||||||
if (empty($object)) {
|
if (empty($object)) {
|
||||||
$message = sprintf('Key "%s" does not exist as the array is empty', $arrayItem);
|
$message = sprintf('Key "%s" does not exist as the array is empty', $arrayItem);
|
||||||
} else {
|
} else {
|
||||||
$message = sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object)));
|
$message = sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object)));
|
||||||
}
|
}
|
||||||
} elseif (Twig_Template::ARRAY_CALL === $type) {
|
} elseif (Twig_Template::ARRAY_CALL === $type) {
|
||||||
$message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
|
if (null === $object) {
|
||||||
|
$message = sprintf('Impossible to access a key ("%s") on a null variable', $item);
|
||||||
|
} else {
|
||||||
|
$message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
|
||||||
|
}
|
||||||
|
} elseif (null === $object) {
|
||||||
|
$message = sprintf('Impossible to access an attribute ("%s") on a null variable', $item);
|
||||||
} else {
|
} else {
|
||||||
$message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
|
$message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
|
||||||
}
|
}
|
||||||
@@ -807,12 +813,21 @@ PHP_FUNCTION(twig_template_get_attributes)
|
|||||||
} else {
|
} else {
|
||||||
char *type_name = zend_zval_type_name(object);
|
char *type_name = zend_zval_type_name(object);
|
||||||
Z_ADDREF_P(object);
|
Z_ADDREF_P(object);
|
||||||
convert_to_string(object);
|
if (Z_TYPE_P(object) == IS_NULL) {
|
||||||
TWIG_RUNTIME_ERROR(template TSRMLS_CC,
|
convert_to_string(object);
|
||||||
(strcmp("array", type) == 0)
|
TWIG_RUNTIME_ERROR(template TSRMLS_CC,
|
||||||
? "Impossible to access a key (\"%s\") on a %s variable (\"%s\")"
|
(strcmp("array", type) == 0)
|
||||||
: "Impossible to access an attribute (\"%s\") on a %s variable (\"%s\")",
|
? "Impossible to access a key (\"%s\") on a %s variable"
|
||||||
item, type_name, Z_STRVAL_P(object));
|
: "Impossible to access an attribute (\"%s\") on a %s variable",
|
||||||
|
item, type_name);
|
||||||
|
} else {
|
||||||
|
convert_to_string(object);
|
||||||
|
TWIG_RUNTIME_ERROR(template TSRMLS_CC,
|
||||||
|
(strcmp("array", type) == 0)
|
||||||
|
? "Impossible to access a key (\"%s\") on a %s variable (\"%s\")"
|
||||||
|
: "Impossible to access an attribute (\"%s\") on a %s variable (\"%s\")",
|
||||||
|
item, type_name, Z_STRVAL_P(object));
|
||||||
|
}
|
||||||
zval_ptr_dtor(&object);
|
zval_ptr_dtor(&object);
|
||||||
}
|
}
|
||||||
efree(item);
|
efree(item);
|
||||||
@@ -836,7 +851,14 @@ PHP_FUNCTION(twig_template_get_attributes)
|
|||||||
if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
|
if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
throw new Twig_Error_Runtime(sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object), -1, $this->getTemplateName());
|
|
||||||
|
if (null === $object) {
|
||||||
|
$message = sprintf('Impossible to invoke a method ("%s") on a null variable', $item);
|
||||||
|
} else {
|
||||||
|
$message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Twig_Error_Runtime($message, -1, $this->getTemplateName());
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) {
|
if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) {
|
||||||
@@ -846,9 +868,15 @@ PHP_FUNCTION(twig_template_get_attributes)
|
|||||||
|
|
||||||
type_name = zend_zval_type_name(object);
|
type_name = zend_zval_type_name(object);
|
||||||
Z_ADDREF_P(object);
|
Z_ADDREF_P(object);
|
||||||
convert_to_string_ex(&object);
|
if (Z_TYPE_P(object) == IS_NULL) {
|
||||||
|
convert_to_string_ex(&object);
|
||||||
|
|
||||||
TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on a %s variable (\"%s\")", item, type_name, Z_STRVAL_P(object));
|
TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on a %s variable", item, type_name);
|
||||||
|
} else {
|
||||||
|
convert_to_string_ex(&object);
|
||||||
|
|
||||||
|
TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on a %s variable (\"%s\")", item, type_name, Z_STRVAL_P(object));
|
||||||
|
}
|
||||||
|
|
||||||
zval_ptr_dtor(&object);
|
zval_ptr_dtor(&object);
|
||||||
efree(item);
|
efree(item);
|
||||||
|
|||||||
+14
-2
@@ -419,7 +419,13 @@ abstract class Twig_Template implements Twig_TemplateInterface
|
|||||||
$message = sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object)));
|
$message = sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object)));
|
||||||
}
|
}
|
||||||
} elseif (Twig_Template::ARRAY_CALL === $type) {
|
} elseif (Twig_Template::ARRAY_CALL === $type) {
|
||||||
$message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
|
if (null === $object) {
|
||||||
|
$message = sprintf('Impossible to access a key ("%s") on a null variable', $item);
|
||||||
|
} else {
|
||||||
|
$message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
|
||||||
|
}
|
||||||
|
} elseif (null === $object) {
|
||||||
|
$message = sprintf('Impossible to access an attribute ("%s") on a null variable', $item);
|
||||||
} else {
|
} else {
|
||||||
$message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
|
$message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
|
||||||
}
|
}
|
||||||
@@ -437,7 +443,13 @@ abstract class Twig_Template implements Twig_TemplateInterface
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new Twig_Error_Runtime(sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object), -1, $this->getTemplateName());
|
if (null === $object) {
|
||||||
|
$message = sprintf('Impossible to invoke a method ("%s") on a null variable', $item);
|
||||||
|
} else {
|
||||||
|
$message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Twig_Error_Runtime($message, -1, $this->getTemplateName());
|
||||||
}
|
}
|
||||||
|
|
||||||
// object property
|
// object property
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ class Twig_Tests_TemplateTest extends PHPUnit_Framework_TestCase
|
|||||||
|
|
||||||
$context = array(
|
$context = array(
|
||||||
'string' => 'foo',
|
'string' => 'foo',
|
||||||
|
'null' => null,
|
||||||
'empty_array' => array(),
|
'empty_array' => array(),
|
||||||
'array' => array('foo' => 'foo'),
|
'array' => array('foo' => 'foo'),
|
||||||
'array_access' => new Twig_TemplateArrayAccessObject(),
|
'array_access' => new Twig_TemplateArrayAccessObject(),
|
||||||
@@ -47,11 +48,14 @@ class Twig_Tests_TemplateTest extends PHPUnit_Framework_TestCase
|
|||||||
{
|
{
|
||||||
$tests = array(
|
$tests = array(
|
||||||
array('{{ string["a"] }}', 'Impossible to access a key ("a") on a string variable ("foo") in "%s" at line 1', false),
|
array('{{ string["a"] }}', 'Impossible to access a key ("a") on a string variable ("foo") in "%s" at line 1', false),
|
||||||
|
array('{{ null["a"] }}', 'Impossible to access a key ("a") on a null variable in "%s" at line 1', false),
|
||||||
array('{{ empty_array["a"] }}', 'Key "a" does not exist as the array is empty in "%s" at line 1', false),
|
array('{{ empty_array["a"] }}', 'Key "a" does not exist as the array is empty in "%s" at line 1', false),
|
||||||
array('{{ array["a"] }}', 'Key "a" for array with keys "foo" does not exist in "%s" at line 1', false),
|
array('{{ array["a"] }}', 'Key "a" for array with keys "foo" does not exist in "%s" at line 1', false),
|
||||||
array('{{ array_access["a"] }}', 'Key "a" in object with ArrayAccess of class "Twig_TemplateArrayAccessObject" does not exist in "%s" at line 1', false),
|
array('{{ array_access["a"] }}', 'Key "a" in object with ArrayAccess of class "Twig_TemplateArrayAccessObject" does not exist in "%s" at line 1', false),
|
||||||
array('{{ string.a }}', 'Impossible to access an attribute ("a") on a string variable ("foo") in "%s" at line 1', false),
|
array('{{ string.a }}', 'Impossible to access an attribute ("a") on a string variable ("foo") in "%s" at line 1', false),
|
||||||
array('{{ string.a() }}', 'Impossible to invoke a method ("a") on a string variable ("foo") in "%s" at line 1', false),
|
array('{{ string.a() }}', 'Impossible to invoke a method ("a") on a string variable ("foo") in "%s" at line 1', false),
|
||||||
|
array('{{ null.a }}', 'Impossible to access an attribute ("a") on a null variable in "%s" at line 1', false),
|
||||||
|
array('{{ null.a() }}', 'Impossible to invoke a method ("a") on a null variable in "%s" at line 1', false),
|
||||||
array('{{ empty_array.a }}', 'Key "a" does not exist as the array is empty in "%s" at line 1', false),
|
array('{{ empty_array.a }}', 'Key "a" does not exist as the array is empty in "%s" at line 1', false),
|
||||||
array('{{ array.a }}', 'Key "a" for array with keys "foo" does not exist in "%s" at line 1', false),
|
array('{{ array.a }}', 'Key "a" for array with keys "foo" does not exist in "%s" at line 1', false),
|
||||||
array('{{ attribute(array, -10) }}', 'Key "-10" for array with keys "foo" does not exist in "%s" at line 1', false),
|
array('{{ attribute(array, -10) }}', 'Key "-10" for array with keys "foo" does not exist in "%s" at line 1', false),
|
||||||
|
|||||||
Reference in New Issue
Block a user