Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP ParseError(구문 분석 오류)란? eval() 함수 오류 처리 방법 총정리

개요

ParseError 클래스는 CompileError 클래스를 상속받습니다. (과거에는 Error 클래스의 하위 클래스였으나 이후 변경되었습니다.) 이 유형의 오류는 eval() 함수에 문자열 형태로 전달된 PHP 코드를 실행하는 과정에서 발생합니다.

eval() 함수는 인자로 전달된 문자열을 PHP 코드로 해석하여 실행하는 역할을 합니다.

구문(Syntax)

eval ( string $code ) : mixed

매개변수

번호매개변수 및 설명
1code
실행하고자 하는 유효한 PHP 코드

주요 특징

eval() 함수로 전달되는 코드 작성 시 다음 사항을 반드시 지켜야 합니다.

  • 코드는 PHP 시작 태그(<?php)와 종료 태그(?>) 안에 포함되어서는 안 됩니다.
  • 코드는 반드시 세미콜론(;)으로 끝나야 합니다.

유효한 코드가 실행되면 NULL을 반환하며, 코드에 문법 오류가 있을 경우 ParseError 예외가 발생합니다. 따라서 try-catch 블록을 사용해 이 예외를 적절히 처리하는 것이 좋습니다.

예제

다음 예제는 잘못된 코드로 인해 ParseError가 발생하며, catch 블록이 이를 처리하는 모습을 보여줍니다.

<?php
$a = 10;
try {
    eval('$a=$a+;');
}
catch (ParseError $e) {
    echo "Parse Error:" . $e->getMessage();
}
?>

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Parse Error:syntax error, unexpected ';'

출력 메시지를 보면 '$a+;' 구문에서 덧셈 연산자 뒤에 피연산자가 없이 세미콜론이 바로 나왔기 때문에 '예상치 못한 ;'라는 문법 오류가 발생한 것을 확인할 수 있습니다. 이처럼 eval() 함수를 사용할 때는 전달하는 코드의 유효성을 항상 검증하고, ParseError 발생 가능성에 대비해 try-catch 구문으로 예외 처리를 구현하는 것이 안전한 코딩 습관입니다.