diff --git a/changelog/977.md b/changelog/977.md new file mode 100644 index 000000000..d41453c1b --- /dev/null +++ b/changelog/977.md @@ -0,0 +1 @@ +- Fix warning when calling hasVariable for an undefined variable [#977](https://github.com/smarty-php/smarty/issues/977) \ No newline at end of file diff --git a/src/Data.php b/src/Data.php index 582ee6601..3bb7814db 100644 --- a/src/Data.php +++ b/src/Data.php @@ -290,7 +290,7 @@ public function setVariable($varName, Variable $variableObject) { * @return bool */ public function hasVariable($varName): bool { - return !($this->getVariable($varName) instanceof UndefinedVariable); + return !($this->getVariable($varName, true, false) instanceof UndefinedVariable); } /** diff --git a/tests/UnitTests/SmartyMethodsTests/GetTemplateVars/cache/.gitignore b/tests/UnitTests/SmartyMethodsTests/GetTemplateVars/cache/.gitignore deleted file mode 100644 index d88cc1446..000000000 --- a/tests/UnitTests/SmartyMethodsTests/GetTemplateVars/cache/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Ignore anything in here, but keep this directory -* diff --git a/tests/UnitTests/SmartyMethodsTests/GetTemplateVars/templates_c/.gitignore b/tests/UnitTests/SmartyMethodsTests/GetTemplateVars/templates_c/.gitignore deleted file mode 100644 index d88cc1446..000000000 --- a/tests/UnitTests/SmartyMethodsTests/GetTemplateVars/templates_c/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -# Ignore anything in here, but keep this directory -* diff --git a/tests/UnitTests/SmartyMethodsTests/GetTemplateVars/GetTemplateVarsTest.php b/tests/UnitTests/SmartyMethodsTests/TemplateVars/GetTemplateVarsTest.php similarity index 100% rename from tests/UnitTests/SmartyMethodsTests/GetTemplateVars/GetTemplateVarsTest.php rename to tests/UnitTests/SmartyMethodsTests/TemplateVars/GetTemplateVarsTest.php diff --git a/tests/UnitTests/SmartyMethodsTests/TemplateVars/HasVariableTest.php b/tests/UnitTests/SmartyMethodsTests/TemplateVars/HasVariableTest.php new file mode 100644 index 000000000..047af7b90 --- /dev/null +++ b/tests/UnitTests/SmartyMethodsTests/TemplateVars/HasVariableTest.php @@ -0,0 +1,32 @@ +setUpSmarty(__DIR__); + } + + + public function testInit() + { + $this->cleanDirs(); + } + + public function testSimpleTrue() + { + $this->smarty->assign('foo', 'bar'); + $this->assertTrue($this->smarty->hasVariable('foo')); + } + + + public function testSimpleFalse() + { + $this->smarty->assign('foo', 'bar'); + $this->assertFalse($this->smarty->hasVariable('foox')); + } + +}