모두
PHP에서 '@'기호의 의미는 무엇입니까?
$sd = (@$argv[1]) ? getdate(strtotime($argv[1])) : getdate();
내가 삼항 연산자를 이해하지만, 나는
코드 샘플 코드는 ... (가) '@'무엇을 의미하는지 아무 생각이 없다 '?': 예를 들어,이 성명에서 무엇을 의미 하는가 (아주 좋은!) cs75.net 하버드 확장 과정.
감사
JDelage
모두
PHP에서 '@'기호의 의미는 무엇입니까?
$sd = (@$argv[1]) ? getdate(strtotime($argv[1])) : getdate();
내가 삼항 연산자를 이해하지만, 나는
코드 샘플 코드는 ... (가) '@'무엇을 의미하는지 아무 생각이 없다 '?': 예를 들어,이 성명에서 무엇을 의미 하는가 (아주 좋은!) cs75.net 하버드 확장 과정.
감사
JDelage
다음은 기능 (또는 표현)의 과정으로 제조 될 수있다 @
symbol suppresses any errors.
PHP는 하나의 오류 제어 연산자 인 at 기호 (@)를 지원합니다. PHP의 표현식 앞에 붙는 경우 해당 표현식에 의해 생성 될 수있는 오류 메시지는 무시됩니다.
오류 방지는 중지하려는 오류를 억제하는 것이 아니라 예측하지 못한 오류도 억제하므로 가능하면 피해야합니다. 이렇게하면 디버깅이 악몽이됩니다.
$argv[1]
이 정의되어 있는지 검사 할 수 없으며 그가 얼마나 게으른 지 알려주는 경고를보고 싶지 않은 프로그래머를위한 해결책입니다. 일컬어 error suppression. E_NOTICE
이
$argv = Array("Only one object.");
if ($argv[1]) { print "Argv[1] set"; }
는 경고를 야기 설정되어 있지만
$argv = Array("Only one object.");
if (@$argv[1]) { print "Argv[1] set"; }
단순히 아무것도 인쇄하지 않는다면
또는 언급하지 않는 * lazy * answerer는'isset ($ argv [1])'또는'! empty ($ argv [1])';)로 바뀌어야합니다 – gnarf
OP는 그것이 무엇인지 물었습니다 :) –
@
supressess 표현에서 오류 메시지, 즉,.
if (!empty($var)) { print "Argv[1] is set and non-false."; }
를 사용하는 것이 훨씬 더 연습 있다고하지만 명심하십시오.
다른 사람들은 @
이 오류 메시지를 표시하지 않는다고 설명했습니다. 일리아 Alshanetsky의 talk "PHP 및 성능"부터 재미있는 사실 :
오류 차단 연산자는 PHP의 알파벳에서 가장 비싼 문자입니다. SO 검색이 기호와 정확히 도움이되지 않습니다하지만,
$old = ini_set("error_reporting", 0);
action();
ini_set("error_reporting", $old);
속는 사람이 겉보기에 무해한 연산자는 실제로 배경에서 상당히 많이 사용하는 작업을 수행합니다. http://stackoverflow.com/questions/2279289/what-is-the-meaning-of-in-phpclosed –
젠장, 나는 그것을 찾았지만 아무 것도 찾을 수 없었다. 대답은 IMHO입니다. – JDelage