Odpowiedzi:
Nie ma różnicy - są takie same.
Podręcznik PHP dla exit
:
Uwaga: Ta konstrukcja języka jest równoważna z
die()
.
Podręcznik PHP dla die
:
Ta konstrukcja języka jest równoważna z
exit()
.
die
na zatrzymania związane z błędami i exit
na wszystkie inne scenariusze. Po prostu wydaje się płynąć lepiej podczas czytania kodu.
die
jest o wiele szybszy do pisania niż exit
... Zaczynam używać, exit
ponieważ jest bardziej czytelny dla programistów spoza PHP, ale die
po prostu szybciej jest pisać, gdy jesteś w pośpiech. Poza tym, pisząc, nie muszę zmieniać pozycji rąk, aby pisać die
.
Różnica pomiędzy die()
i exit()
w PHP jest ich źródłem .
exit()
wynosi exit()
w C .die()
jest z die
w Perlu .die()
i exit()
są równoważnymi funkcjami.
Podręcznik PHP dla die
:
Ta konstrukcja języka jest równoważna z
exit()
.
Podręcznik PHP dla exit
:
Uwaga: Ta konstrukcja języka jest równoważna z
die()
.
Podręcznik PHP dla listy aliasów funkcji :
die()
i exit()
są różne w innych językach , ale w PHP są one identyczne.
... Jako programista C i Perl byłem gotów odpowiedzieć: „Dlaczego, exit () po prostu wysyła programowi numeryczny kod wyjścia, a die () wypisuje komunikat o błędzie na stderr i wychodzi ze statusem EXIT_FAILURE. „ Ale potem przypomniałem sobie, że jesteśmy w brudnej krainie składni PHP.
W PHP exit () i die () są identyczne.
Projektanci najwyraźniej pomyśleli: „Hmm, pożyczmy exit () od C. A ludzie Perla prawdopodobnie polubią to, jeśli weźmiemy die () tak samo jak Perl . Ups! Mamy teraz dwie funkcje wyjścia! Zróbmy to tak, aby oboje może wziąć ciąg lub liczbę całkowitą jako argument i uczynić je identycznymi! "
Rezultat końcowy jest taki, że tak naprawdę wcale nie było to „łatwiejsze”, a bardziej skomplikowane. Kodery C i Perl będą nadal używać exit (), aby podrzucić tylko wartość wyjściową liczby całkowitej, a die (), aby podrzucić komunikat o błędzie i wyjść z błędem. Nowicjusze i osoby znające PHP jako pierwszy język prawdopodobnie będą się zastanawiać: „umm, dwie funkcje wyjścia, z których należy korzystać?” Podręcznik nie wyjaśnia, dlaczego istnieje exit () i die ().
Ogólnie rzecz biorąc, PHP ma wiele takich dziwnych redundancji - stara się być przyjazny dla ludzi pochodzących z różnych środowisk językowych, ale w ten sposób tworzy mylącą redundancję.
exit()
nie zamyka połączenia, die()
ale wydaje się istotny.
Jak wspomniano wcześniej, te dwa polecenia generują ten sam token analizatora składni.
ALE
Istnieje niewielka różnica, i tak długo trwa parser, aby zwrócić token.
Nie studiowałem parsera PHP, ale jeśli jest to długa lista funkcji zaczynająca się od „d” i krótsza lista zaczynająca się od „e”, to musi istnieć kara czasowa w poszukiwaniu nazwy funkcji dla funkcji zaczynających się od „ mi". Mogą występować inne różnice wynikające z tego, jak sprawdzana jest cała nazwa funkcji.
Wątpię, czy będzie to wymierne, chyba że masz „idealne” środowisko dedykowane do analizowania PHP i wiele żądań o różnych parametrach. Ale musi być różnica, w końcu PHP jest językiem interpretowanym.
Podręcznik PHP na die :
die - Odpowiednik wyjścia
Możesz nawet zrobić die;
to samo, co exit;
- z parens lub bez.
Jedyną zaletą wyboru die()
ponad exit()
, może być Ci oszczędzić czas na wpisanie dodatkowego nas ;-)
php -a
) die;
, die();
, exit;
i exit();
nie mają żadnego wpływu, natomiast exit
(bez średnika) wyjście z trybu interaktywnego.
Jak wszystkie inne poprawne odpowiedzi mówią, die
i exit
są identyczne / aliasy.
Chociaż mam osobistą konwencję, której używam, gdy chcę zakończyć wykonywanie skryptu, gdy jest to oczekiwane i pożądane exit;
. A kiedy muszę zakończyć wykonywanie z powodu pewnych problemów (nie mogę połączyć się z db, nie mogę zapisać do pliku itp.), Używam die("Something went wrong.");
do „zabicia” skryptu.
Kiedy korzystam z wyjścia:
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.
Kiedy używam die:
$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 );
W ten sposób, kiedy widzę exit
w pewnym momencie mojego kodu, wiem, że w tym momencie chcę wyjść, ponieważ logika kończy się tutaj. Kiedy widzę die
, wiem, że chciałbym kontynuować wykonywanie, ale nie mogę lub nie powinienem z powodu błędu w poprzednim wykonaniu.
Oczywiście działa to tylko podczas pracy nad samym projektem. Gdy będzie więcej ludzi, nikt nie będzie im przeszkadzał w użyciu die
lub w exit
przypadku, gdy nie będzie to zgodne z moimi konwencjami ...
Oto coś, co jest dość interesujące. Chociaż exit()
i die()
są równoważne, die()
zamyka połączenie. exit()
nie zamyka połączenia.
die()
:
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
exit()
:
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
Wyniki:
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
Wystarczy wziąć to pod uwagę w swoim projekcie.
exit
i die
działają tak samo, oboje ścisły związek.
Pod względem funkcjonalności są identyczne, ale używam ich w następujących scenariuszach, aby kod był czytelny:
Użyj die (), gdy wystąpi błąd i musisz zatrzymać wykonywanie.
na przykład
die( 'Oops! Something went wrong' );
Użyj exit (), gdy nie ma błędu i musisz zatrzymać wykonywanie.
na przykład
exit( 'Request has been processed successfully!' );
Ta strona mówi, że die
to alies exit
, więc są identyczne. Ale wyjaśnia również, że:
istnieją funkcje, które zmieniły nazwy z powodu czyszczenia interfejsu API lub z innego powodu, a stare nazwy są zachowywane tylko jako aliasy dla kompatybilności wstecznej. Zazwyczaj używanie tego rodzaju aliasów jest złym pomysłem, ponieważ mogą one wiązać się z przestarzałością lub zmianą nazwy, co doprowadzi do niemożliwego do przeniesienia skryptu.
Nazwij mnie paranoikiem, ale die
w przyszłości może nie być .
is_int()
i is_integer()
są równie dobre na przykład. Patrząc na php-src
historię zatwierdzeń w GitHub, die()
konstrukcja jest w PHP przynajmniej od 1999 roku, kiedy została przekonwertowana na repozytorium SVN i prawdopodobnie tak długo, jak istnieje język. Absurdem wydaje się wyobrażanie sobie, że kiedykolwiek będzie przestarzałe.
exit
w przyszłości. Lub może nie być die
w przyszłości”
Dane wyjściowe z https://3v4l.org pokazują, że die i exit są funkcjonalnie identyczne.
Są one zasadniczo takie same, choć ten artykuł sugeruje inaczej.
Funkcjonalnie są identyczne. Tak więc wybór, którego użyć, jest całkowicie osobistą preferencją. Semantycznie po angielsku są różne. Die brzmi negatywnie. Gdy mam funkcję zwracającą dane JSON do klienta i kończącą program, może być okropne, jeśli wywołam tę funkcję jsonDie (), a bardziej odpowiednie jest wywołanie jej jsonExit (). Z tego powodu zawsze używam wyjścia zamiast umierać.
Z tego co wiem, kiedy patrzę na to pytanie tutaj
Napisano tam, że „w PHP istnieje wyraźna różnica w wynikach nagłówka. W poniższych przykładach zdecydowałem się użyć innego nagłówka, ale dla pokazania różnicy między exit () a die (), co nie ma znaczenia”, i przetestowane (osobiście)
W quizie w3schools: Funkcje die () i exit () czy dokładnie to samo? moja odpowiedź jest fałszywa. To nieprawidłowa odpowiedź. Prawidłowa odpowiedź jest prawdziwa.
Zauważyłem w swoich skryptach przynajmniej to, że exit () zatrzyma aktualnie wykonywany skrypt i przekaże kontrolę z powrotem każdemu skryptowi wywołującemu, podczas gdy die zatrzyma php na jego ścieżce. Powiedziałbym, że to całkiem spora różnica?
Wynik funkcji exit () i die () jest zawsze taki sam. Ale jak wyjaśniono na stronie podręcznika aliasu ( http://php.net/manual/en/aliases.php ), mówi ona, że funkcja die () wywołuje funkcję wyjścia. Myślę, że jest mocno zakodowany, jak poniżej:
function die($msg){
exit($msg);
}
Nie stanowi to problemu z wydajnością w przypadku małych, średnich i dużych projektów, ale jeśli projekt ma miliardy pomnóż miliardy pomnóż miliardy procesów, dzieje się to bardzo ważny stan optymalizacji wydajności.
Ale większość ludzi nie uważa, że jest to problem, ponieważ jeśli masz tyle procesów, musisz pomyśleć o większym problemie niż w przypadku funkcji nadrzędnej lub aliasu.
Ale dokładna odpowiedź brzmi: funkcja master zawsze jest szybsza niż alias.
Wreszcie; Strona podręcznika Alias mówi, że nie możesz już używać die. To tylko pseudonim i jest przestarzały.
Zazwyczaj używanie tego rodzaju aliasów jest złym pomysłem, ponieważ mogą one wiązać się z przestarzałością lub zmianą nazwy, co doprowadzi do niemożliwego do przeniesienia skryptu. Ta lista ma pomóc tym, którzy chcą uaktualnić swoje stare skrypty do nowszej składni.
die()
nie jest osobną funkcją. To tylko inna nazwa exit()
. Ta odpowiedź zawiera nieprawidłowe stwierdzenia dotyczące aliasów i ich działania.
Brzmią mniej więcej tak samo, jednak exit () pozwala również ustawić kod wyjścia skryptu PHP.
Zazwyczaj tak naprawdę nie jest to potrzebne, ale podczas pisania skryptów PHP na konsoli możesz chcieć sprawdzić na przykład Bash, czy skrypt ukończył wszystko poprawnie.
Następnie możesz użyć exit () i złapać to później. Die () jednak tego nie obsługuje.
Die () zawsze istnieje z kodem 0. Zatem w zasadzie polecenie die () wykonuje następujące czynności:
<?php
echo "I am going to die";
exit(0);
?>
Który jest taki sam jak:
<?php
die("I am going to die");
?>
die
i exit
są identyczne (produkują ten sam token analizatora składni ( T_EXIT
) i są wykonywane przez ten sam kod). Jeśli parametr jest liczbą całkowitą, zwróci ten kod do powłoki. Jeśli tak nie jest, wyświetli go i zwróci 0. Tak die
i exit
są dosłownie aliasami dla siebie.
so exit() is exit and die() is also exit :)