From d3f86a517ff7c654835093f24c79a6df11826142 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Sat, 28 May 2016 14:34:02 +0200 Subject: [PATCH] PhpWriter: added warning about deprecated variables --- src/Latte/PhpWriter.php | 4 ++++ tests/Latte/Compiler.errors.phpt | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/Latte/PhpWriter.php b/src/Latte/PhpWriter.php index 8c4b6965c..f7a354231 100644 --- a/src/Latte/PhpWriter.php +++ b/src/Latte/PhpWriter.php @@ -174,12 +174,16 @@ public function preprocess(MacroTokens $tokens = NULL) */ public function validateTokens(MacroTokens $tokens) { + $deprecatedVars = array_flip(['$template', '$_b', '$_l', '$_g', '$_args', '$_fi', '$_control', '$_presenter', '$_form', '$_input', '$_label', '$_snippetMode']); $brackets = []; $pos = $tokens->position; while ($tokens->nextToken()) { if ($tokens->isCurrent('?>')) { throw new CompileException('Forbidden ?> inside macro'); + } elseif ($tokens->isCurrent($tokens::T_VARIABLE) && isset($deprecatedVars[$tokens->currentValue()])) { + trigger_error("Variable {$tokens->currentValue()} is deprecated.", E_USER_DEPRECATED); + } elseif ($tokens->isCurrent($tokens::T_SYMBOL) && !$tokens->isPrev('::') && !$tokens->isPrev('->') && preg_match('#^[A-Z0-9]{3,}$#', $val = $tokens->currentValue()) diff --git a/tests/Latte/Compiler.errors.phpt b/tests/Latte/Compiler.errors.phpt index b7d1c55c1..96dab5f50 100644 --- a/tests/Latte/Compiler.errors.phpt +++ b/tests/Latte/Compiler.errors.phpt @@ -94,3 +94,7 @@ Assert::exception(function () use ($latte) { Assert::noError(function () use ($latte) { $latte->compile('{php function () { yield; }}'); }); + +Assert::error(function () use ($latte) { + $latte->compile('{$_form[$name]}'); +}, E_USER_DEPRECATED, 'Variable $_form is deprecated.');