답변:
die
오류 관련 중지 및 exit
다른 모든 시나리오를 예약 합니다 . 코드를 읽을 때 더 잘 흐르는 것 같습니다.
die
쓰기보다 훨씬 빠릅니다 exit
... exit
PHP가 아닌 프로그래머에게는 더 읽기 쉽기 때문에 사용 하기 시작 했지만 die
입력 할 때 더 빠릅니다. 서둘러. 또한 입력하는 방식에 따라 쓰기 위해 손 위치를 변경할 필요가 없습니다 die
.
PHP die()
와 exit()
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에는 이와 같이 이상한 중복이 많이 있습니다. 다른 언어 배경을 가진 사람들에게는 친절하지만, 그렇게하는 동안 혼란스러운 중복을 만듭니다.
exit()
연결을 닫지 않은 다른 사용자가 응답 한 die()
것으로 보입니다.
앞에서 언급했듯이이 두 명령은 동일한 파서 토큰을 생성합니다.
그러나
작은 차이가 있으며 이는 파서가 토큰을 반환하는 데 걸리는 시간입니다.
PHP 파서를 연구하지는 않았지만 "d"로 시작하는 긴 함수 목록이고 "e"로 시작하는 짧은 목록 인 경우 " 이자형". 전체 기능 이름을 확인하는 방법에 따라 다른 차이점이있을 수 있습니다.
PHP 구문 분석 전용 "완벽한"환경과 다른 매개 변수를 가진 많은 요청이 없다면 측정 할 수 없을 것입니다. 그러나 PHP는 통역 된 언어입니다.
다이의 PHP 매뉴얼 :
die — 종료와 동일
Parens의 유무에 관계없이 die;
동일한 방식으로 수행 할 수도 있습니다 exit;
.
선택의 유일한 이점 die()
이상은 exit()
, 당신이 여분의 문자를 입력에 여분의 시간이 될 수 있습니다 ;-)
php -a
) die;
, die();
, exit;
와 exit();
동안 효과가 없습니다 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
프로젝트를 위해 이것을 고려해야 할 경우를 대비하여.
exit
하고 die
그들은 모두 밀접한 관계, 같은 방식으로 작동합니다.
기능 측면에서는 동일하지만 다음 시나리오에서 코드를 읽을 수 있도록 사용합니다.
오류가 발생하여 실행을 중지해야 할 경우 die ()를 사용하십시오.
예 :
die( 'Oops! Something went wrong' );
오류가없고 실행을 중지해야 할 경우 exit ()를 사용하십시오.
예 :
exit( 'Request has been processed successfully!' );
이 페이지 말한다는 die
의 Alies 보낸 사람이다 exit
그들은 동일하므로. 또한 다음과 같이 설명합니다.
API 정리 또는 다른 이유로 인해 이름을 변경 한 함수가 있으며 이전 이름은 이전 버전과의 호환성을 위해 별칭으로 만 유지됩니다. 이러한 종류의 별칭은 더 이상 사용되지 않거나 이름이 변경되어 이식 할 수없는 스크립트로 이어질 수 있으므로 일반적으로 좋지 않습니다.
그래서, 편집증이라고 불러라. 그러나 die
앞으로는 아무것도 없을 것이다 .
is_int()
와 is_integer()
예를 들어 똑같이 좋다. php-src
GitHub 의 커밋 히스토리를 살펴보면 die()
구문은 SVN 저장소로 변환 된 1999 년 이후로 언어가 존재하는 한 PHP로 구성되었습니다. 더 이상 사용되지 않을 것이라고 생각하는 것은 터무니없는 것 같습니다.
exit
. 미래에 또는 더있을 수 있습니다 die
미래"
https://3v4l.org 의이 출력은 die와 exit가 기능적으로 동일 함을 보여줍니다.
기능적으로는 동일합니다. 따라서 어느 것을 사용할 것인지는 전적으로 개인 취향입니다. 의미 적으로 영어로는 다릅니다. 다이는 부정적인 소리. JSON 데이터를 클라이언트에 반환하고 프로그램을 종료하는 함수가있을 때이 함수 jsonDie ()를 호출하면 끔찍할 수 있으며 jsonExit ()를 호출하는 것이 더 적절합니다. 따라서 나는 항상 다이 대신 exit를 사용합니다.
나는이 질문 보면 내가 아는 바로는 여기
"PHP에서는 헤더 출력에 뚜렷한 차이가 있습니다. 아래 예에서는 다른 헤더를 사용하기로 선택했지만 중요하지 않은 exit ()와 die ()의 차이를 보여주기 위해" (개인적으로) 테스트
내가 스크립트에서 적어도 주목 한 것은 exit ()가 현재 실행중인 스크립트를 중지하고 호출하는 스크립트로 제어권을 다시 전달하는 반면 die는 트랙에서 php를 중지한다는 것입니다. 나는 그것이 큰 차이라고 말할 것입니까?
exit () 함수와 die () 함수의 결과는 항상 동일합니다. 그러나 별칭 매뉴얼 페이지 ( http://php.net/manual/en/aliases.php ) 에서 설명한 것처럼 die () 함수는 exit 함수를 호출합니다. 아래처럼 하드 코딩 된 것 같습니다.
function die($msg){
exit($msg);
}
이는 소규모, 중규모 및 대규모 프로젝트의 성능 문제는 아니지만 프로젝트에 수십억 수십억 수십억 프로세스가있는 경우 매우 중요한 성능 최적화 상태가 발생합니다.
그러나 대부분의 사람들은 이것이 문제라고 생각하지 않습니다. 프로세스가 많으면 함수가 마스터 또는 별칭 인 경우보다 더 많은 문제를 생각해야하기 때문입니다.
그러나 정답은 바로 그 것입니다. 항상 마스터 기능이 별칭보다 빠릅니다.
드디어; Alias 매뉴얼 페이지에 따르면 더 이상 주사위를 사용할 수 없습니다. 별명 일 뿐이며 더 이상 사용되지 않습니다.
이러한 종류의 별칭은 더 이상 사용되지 않거나 이름이 변경되어 이식 할 수없는 스크립트로 이어질 수 있으므로 일반적으로 좋지 않습니다. 이 목록은 이전 스크립트를 새로운 구문으로 업그레이드하려는 사람들을 돕기 위해 제공됩니다.
die()
별도의 기능이 아닙니다. 의 다른 이름 일뿐입니다 exit()
. 이 답변에는 별칭과 성능에 대한 잘못된 설명이 포함되어 있습니다.
그들은 거의 비슷하게 들리지만 exit ()를 사용하면 PHP 스크립트의 종료 코드를 설정할 수도 있습니다.
일반적으로 이것을 필요로하지는 않지만 콘솔 PHP 스크립트를 작성할 때 스크립트가 모든 것을 올바르게 완료했는지 확인하십시오 (예 : Bash).
그런 다음 exit ()를 사용하여 나중에 잡을 수 있습니다. 그러나 Die ()는이를 지원하지 않습니다.
Die ()는 항상 코드 0과 함께 존재합니다. 따라서 기본적으로 die () 명령은 다음을 수행합니다.
<?php
echo "I am going to die";
exit(0);
?>
다음과 같습니다.
<?php
die("I am going to die");
?>
die
및 exit
(그들은 같은 파서 토큰 (동일 제조 T_EXIT
)와 같은 코드에 의해 실행된다). 매개 변수가 정수이면 해당 코드를 쉘로 리턴합니다. 그렇지 않은 경우, 출력을하고 0 그래서를 반환 die
하고 exit
그대로 각-다른 별칭이다.
so exit() is exit and die() is also exit :)