note 75628 added to function.eval
| From: | nielsvandenberge at hotmail dot com | Date: | Fri, 08 Jun 2007 14:12:24 +0000 |
| Subject: | note 75628 added to function.eval | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-127328@lists.php.net to get a copy of this message | ||
To check if the evaluated code contains a (syntax-)error or returns the boolean false (in a
"good"-script) I use this script:
NOTE: It only checks if the last error has been changed, it's not a good error-handling method
<?php
test_eval("return false;");
test_eval("return true;");
test_eval("\$var = \"123\";");
test_eval("return NOT_DEFINED;");
test_eval("error code");
function test_eval($eval_code)
{
echo "<br />Evaluating: '".$eval_code."'<br />";
// Trigger a harmless notice-error and store it in the variable $last_error
@trigger_error("", E_USER_NOTICE);
$last_error = error_get_last();
$evaled = @eval($eval_code);
// If the last error is still the same as our generated notice-error the eval code hasn't
triggered an error
if ($last_error == error_get_last())
{
switch ($evaled)
{
case false : echo "eval returned false";break;
case true : echo "eval returned true";break;
case null : echo "eval didn't return anything (null)";break;
}
}
else
{
$error = error_get_last();
echo "eval contains an error, it returned false<br
/>".$error['message'];
}
}
?>
This code outputs the following:
Evaluating: 'return false;'
eval returned false
Evaluating: 'return true;'
eval returned true
Evaluating: '$var = "123";'
eval returned false
Evaluating: 'return NOT_DEFINED;'
eval contains an error, it returned false
Use of undefined constant NOT_DEFINED - assumed 'NOT_DEFINED'
Evaluating: 'error code'
eval contains an error, it returned false
parse error, unexpected T_STRING
----
Server IP: 83.137.20.120
Probable Submitter: 89.98.96.83
----
Manual Page -- http://www.php.net/manual/en/function.eval.php
Edit -- https://master.php.net/note/edit/75628
Del: integrated -- https://master.php.net/note/delete/75628/integrated
Del: useless -- https://master.php.net/note/delete/75628/useless
Del: bad code -- https://master.php.net/note/delete/75628/bad+code
Del: spam -- https://master.php.net/note/delete/75628/spam
Del: non-english -- https://master.php.net/note/delete/75628/non-english
Del: in docs -- https://master.php.net/note/delete/75628/in+docs
Del: other reasons-- https://master.php.net/note/delete/75628
Reject -- https://master.php.net/note/reject/75628
Search -- https://master.php.net/manage/user-notes.php