mirror of
https://github.com/twigphp/Twig.git
synced 2026-09-17 21:07:18 +00:00
removed code that people want to overide over and over again
This commit is contained in:
@@ -43,18 +43,31 @@ class Twig_Node_Expression_Name extends Twig_Node_Expression
|
||||
->raw(']')
|
||||
;
|
||||
} else {
|
||||
$compiler
|
||||
->raw('(isset($context[')
|
||||
->string($name)
|
||||
->raw(']) ? $context[')
|
||||
->string($name)
|
||||
->raw('] : ')
|
||||
;
|
||||
|
||||
if ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables()) {
|
||||
$compiler->raw('null)');
|
||||
$compiler
|
||||
->raw('(isset($context[')
|
||||
->string($name)
|
||||
->raw(']) ? $context[')
|
||||
->string($name)
|
||||
->raw('] : null)')
|
||||
;
|
||||
} else {
|
||||
$compiler->raw('$this->getContext($context, ')->string($name)->raw('))');
|
||||
// When Twig will require PHP 7.0, the Template::notFound() method
|
||||
// will be removed and the code inlined like this:
|
||||
// (function () { throw new Exception(...); })();
|
||||
$compiler
|
||||
->raw('(isset($context[')
|
||||
->string($name)
|
||||
->raw(']) || array_key_exists(')
|
||||
->string($name)
|
||||
->raw(', $context) ? $context[')
|
||||
->string($name)
|
||||
->raw('] : $this->notFound(')
|
||||
->string($name)
|
||||
->raw(', ')
|
||||
->repr($this->lineno)
|
||||
->raw('))')
|
||||
;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
-22
@@ -347,35 +347,18 @@ abstract class Twig_Template
|
||||
abstract protected function doDisplay(array $context, array $blocks = array());
|
||||
|
||||
/**
|
||||
* Returns a variable from the context.
|
||||
* Throws an exception for an unknown variable.
|
||||
*
|
||||
* This method is for internal use only and should never be called
|
||||
* directly.
|
||||
*
|
||||
* This method should not be overridden in a sub-class as this is an
|
||||
* implementation detail that has been introduced to optimize variable
|
||||
* access for versions of PHP before 5.4. This is not a way to override
|
||||
* the way to get a variable value.
|
||||
* This is an implementation detail due to a PHP limitation before version 7.0.
|
||||
*
|
||||
* @param array $context The context
|
||||
* @param string $item The variable to return from the context
|
||||
* @param bool $ignoreStrictCheck Whether to ignore the strict variable check or not
|
||||
*
|
||||
* @return mixed The content of the context variable
|
||||
*
|
||||
* @throws Twig_Error_Runtime if the variable does not exist and Twig is running in strict mode
|
||||
* @internal
|
||||
*/
|
||||
final protected function getContext($context, $item, $ignoreStrictCheck = false)
|
||||
final protected function notFound($name, $line)
|
||||
{
|
||||
if (!array_key_exists($item, $context)) {
|
||||
if ($ignoreStrictCheck || !$this->env->isStrictVariables()) {
|
||||
return;
|
||||
}
|
||||
|
||||
throw new Twig_Error_Runtime(sprintf('Variable "%s" does not exist', $item), -1, $this->getTemplateName());
|
||||
}
|
||||
|
||||
return $context[$item];
|
||||
throw new Twig_Error_Runtime(sprintf('Variable "%s" does not exist', $name), $line, $this->getTemplateName());
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -28,7 +28,7 @@ class Twig_Tests_Node_Expression_NameTest extends Twig_Test_NodeTestCase
|
||||
$env1 = new Twig_Environment(null, array('strict_variables' => false));
|
||||
|
||||
return array(
|
||||
array($node, "// line 1\n".'(isset($context["foo"]) ? $context["foo"] : $this->getContext($context, "foo"))', $env),
|
||||
array($node, "// line 1\n".'(isset($context["foo"]) || array_key_exists("foo", $context) ? $context["foo"] : $this->notFound("foo", 1))', $env),
|
||||
array($node, $this->getVariableGetter('foo', 1), $env1),
|
||||
array($self, "// line 1\n\$this"),
|
||||
array($context, "// line 1\n\$context"),
|
||||
|
||||
Reference in New Issue
Block a user