捕获语法异常eval()函数php laravel5

时间:2019-06-10 11:30:06

标签: php laravel

请帮助我。

        $a = 4;
        $b = 6;
        $str_formula = '$a + ';
        $result = null;
        try {
            $math_string ="\$result = ".$str_formula.";";
            eval($math_string);
        } catch (ParseError $e) {
            \Log::info('Caught exception: '.$e->getMessage()) ; 
        }

当我尝试使用“修补程序”时,我在controller.with中无法获取错误语法。这个工作。告诉我为什么。

如果没有,请帮助我获取日志。错误Laravel:

local.ERROR: syntax error, unexpected ';' { ...

我不想看到错误500。那真的很糟糕。对不起,我的英语不好,

请理解。谢谢。

2 个答案:

答案 0 :(得分:1)

使用\ParseError类代替ParseError进行捕获。

如果您使用的是ParseError,则解释为[您当前的名称空间] \ ParseError,但是您需要根名称空间中的ParseError

答案 1 :(得分:0)

eval是一种语言构造,而不是一种功能。这将起作用。了解更多eval php.net

    $a = 4;
    $b = 6;
    $str_formula = '$a + ';
    $result = null;
    try {
        $math_string ="\$result = \"$str_formula\";";
        eval($math_string);
    } catch (ParseError $e) {
        \Log::info('Caught exception: '.$e->getMessage()) ; 
    }