PHP에서 die()
와 exit()
기능 의 차이점은 무엇입니까 ?
둘 다 동일한 기능을 가지고 있다고 생각하지만 둘 다에 다른 것이 있는지 의심합니다 … 무엇입니까?
답변
답변
오리진의 차이점
PHP die()
와 exit()
PHP 의 차이점 은 그 기원 입니다.
기능적으로 동등한
PHP 매뉴얼
PHP 매뉴얼 die
:
이 언어 구성은와 동일합니다
exit()
.
PHP 매뉴얼 exit
:
참고 :이 언어 구문은와 동일합니다
die()
.
함수 별칭 목록에 대한 PHP 매뉴얼 :
다른 언어의 다른
die()
하고 exit()
있는 다른 언어로 다른 하지만 PHP에서 그들은 동일합니다.
에서 또 다른 PHP의 호언 장담 :
… C 및 Perl 코더로서, “왜 exit ()는 숫자 종료 상태로 프로그램을 구제하고 die ()는 오류 메시지를 stderr에 출력하고 EXIT_FAILURE 상태로 종료합니다. ” 그러나 나는 우리가 PHP의 지저분한 구문 세계에 있다는 것을 기억했습니다.
PHP에서 exit ()와 die ()는 동일합니다.
디자이너들은 분명히 “흠, C에서 exit ()를 빌려 보자 . 그리고 Perl 사람들은 아마도 Perl에서와 같이 die ()를 가져 가면 아마 그것을 좋아할 것이다 . 죄송합니다! 우리는 두 개의 exit 함수를 가지고 있습니다! “문자열 또는 정수를 인수로 사용하여 동일하게 만들 수 있습니다!”
결과적으로 이것이 실제로 “더 쉬워 진”것이 아니라 더 혼란스러워 졌다는 것입니다. C 및 Perl 코더는 exit ()를 계속 사용하여 정수 종료 값만 던지고 die ()는 오류 메시지를 던지고 실패와 함께 종료합니다. 초보자와 제 1 언어로 PHP를 사용하는 사람들은 아마도 “음, 두 개의 종료 함수 중 어느 것을 사용해야합니까?” 매뉴얼에는 왜 exit () 및 die ()가 있는지 설명하지 않습니다.
일반적으로 PHP에는 이와 같이 이상한 중복이 많이 있습니다. 다른 언어 배경을 가진 사람들에게는 친절하지만, 그렇게하는 동안 혼란스러운 중복을 만듭니다.
답변
앞에서 언급했듯이이 두 명령은 동일한 파서 토큰을 생성합니다.
그러나
작은 차이가 있으며 이는 파서가 토큰을 반환하는 데 걸리는 시간입니다.
PHP 파서를 연구하지는 않았지만 “d”로 시작하는 긴 함수 목록이고 “e”로 시작하는 짧은 목록 인 경우 ” 이자형”. 전체 기능 이름을 확인하는 방법에 따라 다른 차이점이있을 수 있습니다.
PHP 구문 분석 전용 “완벽한”환경과 다른 매개 변수를 가진 많은 요청이 없다면 측정 할 수 없을 것입니다. 그러나 PHP는 통역 된 언어입니다.
답변
다이의 PHP 매뉴얼 :
die — 종료와 동일
Parens의 유무에 관계없이 die;
동일한 방식으로 수행 할 수도 있습니다 exit;
.
선택의 유일한 이점 die()
이상은 exit()
, 당신이 여분의 문자를 입력에 여분의 시간이 될 수 있습니다 😉
답변
다른 모든 정답으로 말한다, die
그리고 exit
동일 / 별칭이다.
스크립트가 예상되고 원할 때 스크립트 실행을 끝내고 싶을 때는 개인 협약이 있지만을 사용 exit;
합니다. 그리고 일부 문제로 인해 실행을 종료해야 할 때 (db에 연결할 수 없거나 파일에 쓸 수 없음 등) die("Something went wrong.");
스크립트를 “킬”하는 데 사용합니다.
exit를 사용할 때 :
header( "Location: http://www.example.com/" ); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit; // I would like to end now.
내가 죽을 때 :
$data = file_get_contents( "file.txt" );
if( $data === false ) {
die( "Failure." ); // I don't want to end, but I can't continue. Die, script! Die!
}
do_something_important( $data );
이렇게하면 exit
코드의 특정 지점에서 볼 때이 시점에서 논리가 여기서 끝나기 때문에 종료하고 싶다는 것을 알고 있습니다. 내가 볼 때 die
실행을 계속하고 싶다는 것을 알고 있지만 이전 실행의 오류로 인해 할 수 없거나해서는 안됩니다.
물론 이것은 프로젝트에서만 작업 할 때만 작동합니다. 더 많은 사람들이있을 때 아무도 그들을 사용 하지 못하게 die
하거나 exit
내 관습에 맞지 않는 곳에서는 …
답변
여기 흥미로운 것이 있습니다. 비록 exit()
과 die()
동등한, die()
폐쇄 연결. 연결을 exit()
닫지 않습니다 .
die()
:
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
exit()
:
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
결과 :
exit()
:
HTTP/1.1 304 Not Modified
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
die()
:
HTTP/1.1 304 Not Modified
Connection: close
프로젝트를 위해 이것을 고려해야 할 경우를 대비하여.
답변
기능 측면에서는 동일하지만 다음 시나리오에서 코드를 읽을 수 있도록 사용합니다.
오류가 발생하여 실행을 중지해야 할 경우 die ()를 사용하십시오.
예 :
die( 'Oops! Something went wrong' );
오류가없고 실행을 중지해야 할 경우 exit ()를 사용하십시오.
예 :
exit( 'Request has been processed successfully!' );