Функция перехвата синтаксиса eval () php laravel5 - PullRequest
0 голосов
/ 10 июня 2019

Пожалуйста, помогите мне.

        $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.however, когда я пытаюсь использовать "tinker".это работает.скажи мне почему.

Если нет, пожалуйста, помогите мне получить журнал.Ошибка Laravel:

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

Я не хочу видеть ошибку 500. Это действительно плохо.Прошу прощения за мой плохой английский,

пожалуйста, поймите.Спасибо.

Ответы [ 2 ]

1 голос
/ 10 июня 2019

Используйте \ParseError класс для ловли вместо ParseError.

Если вы используете ParseError, это интерпретируется как [Ваше текущее пространство имен] \ ParseError, но вам нужно ParseError из корневого пространства имен.

0 голосов
/ 10 июня 2019

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()) ; 
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...