diff --git a/sources/PhpParser/Evaluation/VariableEvaluator.php b/sources/PhpParser/Evaluation/VariableEvaluator.php index c05e93c91..92444ec5b 100644 --- a/sources/PhpParser/Evaluation/VariableEvaluator.php +++ b/sources/PhpParser/Evaluation/VariableEvaluator.php @@ -22,10 +22,7 @@ class VariableEvaluator extends AbstractExprEvaluator { $sVarname=$oExpr->name; - $bResult = null; - @eval('$bResult = $'.$sVarname.';'); - - return $bResult; - + global $$sVarname; + return $$sVarname; } } \ No newline at end of file diff --git a/tests/php-unit-tests/unitary-tests/sources/PhpParser/Evaluation/PhpExpressionEvaluatorTest.php b/tests/php-unit-tests/unitary-tests/sources/PhpParser/Evaluation/PhpExpressionEvaluatorTest.php index bede0865e..9c6ed56b8 100644 --- a/tests/php-unit-tests/unitary-tests/sources/PhpParser/Evaluation/PhpExpressionEvaluatorTest.php +++ b/tests/php-unit-tests/unitary-tests/sources/PhpParser/Evaluation/PhpExpressionEvaluatorTest.php @@ -15,7 +15,6 @@ class PhpExpressionEvaluatorTest extends ItopDataTestCase { 'ConstFetch: false' => [ 'sExpression' => 'false'], 'ConstFetch: (false)' => [ 'sExpression' => 'false'], 'ConstFetch: true' => [ 'sExpression' => 'true'], - //'ConstFetch: __FILE__' => [ 'sExpression' => __FILE__], 'ConstFetch: (true)' => [ 'sExpression' => 'true'], 'ClassConstFetch: public existing constant' => [ 'sExpression' => 'SetupUtils::PHP_MIN_VERSION'], 'ClassConstFetch: unknown constant' => [ 'sExpression' => 'SetupUtils::UNKNOWN_CONSTANT'], @@ -48,7 +47,8 @@ class PhpExpressionEvaluatorTest extends ItopDataTestCase { 'UnaryPlus: +1' => ['sExpression' => '+1'], 'Concat: "a"."b"' => ['sExpression' => '"a"."b"'], 'ArrayDimFetch: $_SERVER[\'toto\']' => ['sExpression' => '$_SERVER[\'toto\']'], - 'Variable: $_SERVER' => ['sExpression' => '$_SERVER'], + //'Variable: $_SERVER' => ['sExpression' => '$_SERVER'], + 'Variable: $oNonNullVar' => ['sExpression' => '$oNonNullVar'], 'Array: [1000 => "a"]' => ['sExpression' => '[1000 => "a"]'], 'Array: ["a"]' => ['sExpression' => '["a"]'], 'Array dict: ["a"=>"b"]' => ['sExpression' => '["a"=>"b"]'], @@ -78,7 +78,7 @@ class PhpExpressionEvaluatorTest extends ItopDataTestCase { 'Cast: (float)3' => ['sExpression' => '(float)3'], 'Cast: (int)3' => ['sExpression' => '(int)3'], 'Cast: (object)3' => ['sExpression' => '(object)3'], - 'Cast: (string)3' => ['sExpression' => '(string)3'], + 'Cast: (string)$oEvaluationFakeClass' => ['sExpression' => '(string)$oEvaluationFakeClass'], ]; } @@ -94,8 +94,6 @@ class PhpExpressionEvaluatorTest extends ItopDataTestCase { ]; $oEvaluationFakeClass = new EvaluationFakeClass(); - $oEvaluationFakeClass->bIsOk; - $oEvaluationFakeClass->GetName(); $res = PhpExpressionEvaluator::GetInstance()->ParseAndEvaluateExpression($sExpression); if ($forced_expected === "NOTPROVIDED"){ @@ -172,4 +170,9 @@ class EvaluationFakeClass { { return "gabuzomeu_" . $suffix; } + + public function __toString(): string + { + return "a"; + } } \ No newline at end of file