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

PHP에서 @ 기호의 용도는 무엇일까? 에러 제어 연산자 총정리

PHP는 에러 제어 연산자(error control operator), 즉 골뱅이 기호(@)를 지원합니다. 표현식 앞에 @를 붙이면 해당 표현식을 실행하는 과정에서 발생할 수 있는 오류 메시지가 화면에 출력되지 않고 무시됩니다.

PHP에서 @ 기호란?

@는 파일 열기 실패, 존재하지 않는 배열 인덱스 접근 등 예상 가능한 오류가 발생했을 때, 경고나 에러 메시지가 사용자에게 노출되지 않도록 하는 역할을 합니다. 주로 파일 입출력이나 외부 자원에 접근하는 코드에서 활용됩니다.

기본 사용 예제

다음은 @ 기호를 실제로 사용하는 코드입니다.

<?php
   $file = @file('non_existent_file') or
   die("파일 열기 실패: Error Message = '$err'");
   $value = @$cache[$key];
?>

실행 결과

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

Failed in opening the file: Error Message = ''PHP Notice: Undefined
variable: err in /home/cg/root/6985034/main.php on line 4

존재하지 않는 파일 'non_existent_file'을 열려고 시도했지만, @가 붙어 있기 때문에 파일 관련 오류 메시지는 출력되지 않습니다. 대신 die() 문이 실행되며 지정한 메시지만 화면에 나타납니다.

추가 예제

이번에는 배열 인덱스 접근 시 @ 기호를 사용하는 예제를 살펴보겠습니다.

<?php
   $val = $test['5'];
   $val = @$test['5'];
?>

실행 결과

PHP Parse error: syntax error, unexpected '$val' (T_VARIABLE) in /home/cg/root/6985034/main.php on line 5

위 코드는 문장 끝의 세미콜론(;)이 누락되어 구문 분석 오류(Parse Error)가 발생했습니다. 참고로 @ 연산자는 런타임 오류(경고, Notice 등)만 억제할 수 있으며, 세미콜론 누락 같은 구문 오류(syntax error)까지 숨길 수는 없습니다.

@ 연산자 사용 시 주의사항

  • 오류 은닉: @는 오류 메시지를 숨길 뿐 오류 자체를 해결하지 못하므로, 남용하면 디버깅이 어려워집니다.
  • 성능 저하: @를 사용하면 PHP 내부적으로 error_reporting 설정을 변경하고 복원하는 과정이 추가되어 약간의 성능 부담이 있습니다.
  • 권장 방법: file_exists(), isset() 등으로 사전에 조건을 검사하고 처리하는 것이 더 안전하고 명확한 코딩 스타일로 평가받습니다.