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

PHP에서 '@' 접두사는 어떤 역할을 할까? — 오류 제어 연산자 완벽 정리

PHP의 '@' 오류 제어 연산자란?

PHP에서 '@' 기호는 오류 제어 연산자(Error Control Operator)입니다. 표현식 앞에 이 기호를 붙이면, 해당 표현식이 실행될 때 발생할 수 있는 오류 메시지가 화면에 출력되지 않도록 억제됩니다.

기본 사용 예시

$file = @file('존재하지_않는_파일.txt');

위 코드처럼 함수 호출 앞에 '@'를 붙이면, 파일이 존재하지 않아 발생하는 경고(Warning)나 알림(Notice) 메시지가 사용자에게 노출되지 않습니다.

$php_errormsg 변수와의 관계

php.ini 설정에서 track_errors 옵션이 활성화되어 있다면, '@'로 억제된 오류 메시지가 $php_errormsg라는 전역 변수에 저장됩니다. 이 변수에는 가장 최근에 발생한 오류 메시지만 담기며, 새로운 오류가 발생할 때마다 기존 내용이 덮어써진다는 점에 유의해야 합니다.

참고로 track_errors 설정과 $php_errormsg 변수는 PHP 7.2부터 지원 중단(deprecated)되었고, PHP 8.0에서 완전히 제거되었습니다. 최신 버전에서는 error_get_last() 함수를 사용해 마지막 오류 정보를 확인하는 것이 권장됩니다.

사용 시 주의 사항

'@' 연산자는 간편해 보이지만 무분별하게 사용하면 다음과 같은 문제가 생길 수 있습니다.

  • 오류가 숨겨져 디버깅이 어려워짐
  • 잠재적인 버그를 놓치게 됨
  • 오류 처리 로직이 불명확해져 유지보수성 저하

따라서 '@' 연산자에 의존하기보다는, 오류 상태와 조건에 적절히 대응하는 코드를 작성하는 것이 항상 바람직합니다. 조건문으로 사전에 값을 검증하거나, 예외 처리(try-catch) 구문을 활용해 오류를 명시적으로 처리하는 습관을 들이는 것이 좋습니다.