768 Stimmen

Was sind die Unterschiede zwischen die() und exit() in PHP?

Was sind die Unterschiede zwischen die() y exit() Funktionen in PHP?

Ich denke, beide haben die gleiche Funktionalität, aber ich bezweifle, dass es etwas gibt, das sich in beiden unterscheidet... was ist es?

614voto

Marek Karbarz Punkte 28282

Es gibt keinen Unterschied - sie sind identisch.

PHP-Handbuch für exit :

Anmerkung: Dieses Sprachkonstrukt ist äquivalent zu die() .

PHP-Handbuch für die :

Dieses Sprachkonstrukt ist äquivalent zu exit() .

278voto

Geoffrey Hale Punkte 9139

UNTERSCHIED IN DER HERKUNFT

Der Unterschied zwischen die() y exit() in PHP ist ihr Herkunft .


FUNKTIONELL GLEICHWERTIG

die() y exit() sind gleichwertige Funktionen.

PHP-Handbuch

PHP-Handbuch für die :

Dieses Sprachkonstrukt ist äquivalent zu exit() .

PHP-Handbuch für exit :

Anmerkung: Dieses Sprachkonstrukt ist äquivalent zu die() .

PHP-Handbuch für Liste von Funktionsaliasen :

die ist ein Alias für die Masterfunktion exit()


ANDERS IN ANDEREN SPRACHEN

die() y exit() sind anders in anderen Sprachen aber in PHP sind sie identisch.

Desde Eine weitere PHP-Schelte :

...Als C- und Perl-Programmierer war ich bereit zu antworten: "Warum, exit() beendet das Programm einfach das Programm mit einem numerischen Exit-Status ab, während die() die Fehlermeldung in stderr ausgibt und das Programm mit dem Status EXIT_FAILURE verlässt". Aber dann erinnerte ich mich daran, dass wir uns im chaotischen Syntaxland von PHP befinden.

In PHP sind exit() und die() identisch.

Die Designer dachten offensichtlich: "Hmm, leihen wir uns exit() von C aus . Und Perl Leute werden es wahrscheinlich mögen, wenn wir die die() wie von Perl gewohnt auch. Huch! Wir haben jetzt zwei Exit-Funktionen! Lassen Sie uns dafür sorgen, dass sie beide eine Zeichenkette oder eine ganze Zahl als Argument nehmen können und sie identisch machen!"

Das Endergebnis ist, dass dies die Dinge nicht wirklich "einfacher" gemacht hat, nur noch verwirrender. C- und Perl-Programmierer werden weiterhin exit() verwenden, um um nur einen Integer-Exit-Wert auszugeben, und die(), um eine Fehlermeldung auszugeben und mit einem Fehler zu beenden. Neulinge und PHP-als-erste-Sprache-Leute werden sich wahrscheinlich fragen: "Ähm, zwei Exit-Funktionen, welche soll ich benutzen?" Das Handbuch erklärt nicht, warum es exit() und die() gibt.

Im Allgemeinen hat PHP eine Menge seltsamer Redundanzen wie diese - es versucht freundlich zu Leuten zu sein, die aus verschiedenen Sprachen kommen, aber dabei schafft es verwirrende Redundanz.

63voto

Bob Punkte 858

Wie bereits erwähnt, erzeugen diese beiden Befehle das gleiche Parser-Token.

BUT

Es gibt einen kleinen Unterschied, nämlich die Zeit, die der Parser braucht, um das Token zurückzugeben.

Ich habe den PHP-Parser nicht studiert, aber wenn es sich um eine lange Liste von Funktionen handelt, die mit "d" beginnen, und eine kürzere Liste, die mit "e" beginnt, dann muss die Suche nach dem Funktionsnamen für Funktionen, die mit "e" beginnen, mit einem Zeitverlust verbunden sein. Und es kann noch weitere Unterschiede geben, je nachdem, wie der gesamte Funktionsname geprüft wird.

Ich bezweifle, dass dies messbar ist, es sei denn, Sie haben eine "perfekte" Umgebung, die auf das Parsen von PHP ausgerichtet ist, und eine Menge von Anfragen mit verschiedenen Parametern. Aber es muss einen Unterschied geben, schließlich ist PHP eine interpretierte Sprache.

45voto

Levite Punkte 16245

PHP-Handbuch auf die :

die - Äquivalent zu exit

Sie können sogar die; auf die gleiche Weise wie exit; - mit oder ohne Parenthese.

Der einzige Vorteil der Wahl die() en exit() ist vielleicht die Zeit, die Sie beim Tippen eines zusätzlichen Buchstabens sparen ;-)

40voto

Edward Punkte 2227

Hier ist etwas ziemlich Interessantes. Obwohl exit() y die() gleichwertig sind, die() schließt die Verbindung. exit() schließt sich nicht die Verbindung.

die() :

<?php
    header('HTTP/1.1 304 Not Modified');
    die();
?>

exit() :

<?php
    header('HTTP/1.1 304 Not Modified');
    exit();
?>

Ergebnisse:

die() :

HTTP/1.1 304 Not Modified 
Connection: close

exit() :

HTTP/1.1 304 Not Modified 
Connection: Keep-Alive 
Keep-Alive: timeout=5, max=100

Nur für den Fall, dass Sie dies bei Ihrem Projekt berücksichtigen müssen.

Credits: https://stackoverflow.com/a/20932511/4357238

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X