함수 호출 전의 @ 문자


135

PHP에서이 두 함수 호출의 차이점은 무엇입니까?

init_get($somevariable);

@init_get($somevariable);

은 "@"어떤 PHP는 오류 및주의 사항을 닫습니다
Erkan OZKOK

답변:


210

"@"는 함수가 발생시킬 수있는 PHP 오류를 침묵시킵니다.


그러나 @PHP trigger_error함수 앞에 놓으면 어떻게 될까요? 일부 코드에서이를 보았지만 그 동작은 지금까지 일관성이 없습니다. 경우에 따라 구성된 오류 처리기에 의해 오류가보고되고 다른 경우에는보고 된 것처럼 보입니다.
fritzmg

2
@일시적으로 설정합니다 error_reporting0으로하지만,하지 않습니다 "억제"오류.
solidgumby


36

이미 대답했듯이 @오류 (있는 경우)가 표시되지 않습니다.
성능면에서 이것은 권장되지 않습니다.

PHP가하는 일은 :

  • 에러 표시 상태 읽기
  • 오류가 표시되지 않도록 오류 표시 설정
  • 기능을 실행
  • 오류 표시를 이전 상태로 설정

오류를 표시하지 않으려면 use을 사용하십시오 error_reporting(0);.

아니면 그냥 버그 무료 코드를 작성하십시오 : P


0을 사용하는 것이 바람직하지만, 작동하면 잘 알지 못합니다 :)
AntonioCS

1
메일과 같이 제어하지 않는 기능은 어떻습니까? 어떤 다른 옵션이 있습니까? 나는 현재 @를 사용하고 있지만 다른 방식으로 할 수 있다면
좋을


6

모든 사람들이 말했듯이 특정 기능에 대한 오류 출력을 중지합니다. 그러나 오류 표시 설정을 두 번 변경해야하기 때문에 성능이 크게 저하됩니다. 경고 나 오류를 무시하지 말고 대신 코드를 수정하는 것이 좋습니다.


답변 해 주셔서 감사합니다. 그 코드는 내 것이 아니며 호기심을 위해 phpBB 코드 만보 고 있었으므로 성능에 아무런 문제가 없습니다. :) 다시 감사합니다.
nixie
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.