Wat zijn de verschillen in die() en exit() in PHP?

Wat zijn de verschillen tussen de functies die()en exit()in PHP?

Ik denk dat beide dezelfde functionaliteit hebben, maar ik betwijfel of er iets anders is in beide… wat is het?


Antwoord 1, autoriteit 100%

Er is geen verschil – ze zijn hetzelfde.

PHP-handleiding voor exit:

Opmerking: deze taalconstructie is gelijk aan die().

PHP-handleiding voor die:

Deze taalconstructie is gelijk aan exit().


Antwoord 2, autoriteit 43%

VERSCHIL IN OORSPRONG

Het verschil tussen die()en exit()in PHP is hun herkomst.


FUNCTIONEEL EQUIVALENT

die()en exit()zijn equivalente functies.

PHP-handleiding

PHP-handleiding voor die:

Deze taalconstructie is gelijk aan exit().

PHP-handleiding voor exit:

Opmerking: deze taalconstructie is gelijk aan die().

PHP-handleiding voor Lijst met functie-aliassen:

dieis een alias voor masterfunctie exit()


VERSCHILLEND IN ANDERE TALEN

die()en exit()zijn anders in andere talenmaar in PHP zijn ze identiek.

Van Nog een PHP-rant:

…Als C- en Perl-coder was ik klaar om te antwoorden: “Waarom, exit()
uit het programma met een numerieke exit-status, terwijl die() de . afdrukt
foutmelding naar stderr en sluit af met de status EXIT_FAILURE.” Maar dan
Ik herinnerde me dat we ons in het rommelige-syntax-land van PHP bevinden.

In PHP zijn exit() en die() identiek.

De ontwerpers dachten duidelijk: “Hmm, laten we exit() van C lenenen Perl
mensen zullen het waarschijnlijk leuk vinden als we die() ook van Perlnemen.
Oeps! We hebben nu twee exit-functies! Laten we ervoor zorgen dat ze allebei
kan een string of geheel getal als argument nemen en ze identiek maken!”

Het eindresultaat is dat dit de zaken er niet echt “gemakkelijker” op maakte,
alleen maar verwarrender. C- en Perl-codeerders zullen exit() blijven gebruiken om
gooi alleen een integer exit-waarde, en die() om een foutmelding te gooien
en sluit af met een storing. Nieuwelingen en PHP-als-een-eerste-taal mensen
zal zich waarschijnlijk afvragen “umm, twee exit-functies, welke moet ik?
gebruiken?” De handleiding legt niet uit waarom er exit() en die() zijn.

Over het algemeen heeft PHP veel vreemde redundantie zoals deze – het probeert
vriendelijk zijn tegen mensen met verschillende taalachtergronden,
maar terwijl je dit doet, creëert het verwarrende redundantie.


Antwoord 3, autoriteit 11%

Zoals eerder vermeld, produceren deze twee commando’s hetzelfde parsertoken.

MAAR

Er is een klein verschil, en dat is hoe lang het duurt voordat de parser het token retourneert.

Ik heb de PHP-parser niet bestudeerd, maar als het een lange lijst met functies is die begint met “d”, en een kortere lijst die begint met “e”, dan moet er een tijdstraf zijn bij het opzoeken van de functienaam voor functies beginnend met “e”. En er kunnen andere verschillen zijn vanwege de manier waarop de hele functienaam wordt gecontroleerd.

Ik betwijfel of het meetbaar zal zijn, tenzij je een “perfecte” omgeving hebt die gewijd is aan het ontleden van PHP, en veel verzoeken met verschillende parameters.
Maar er moet tenslotte een verschil zijn, PHP is immers een geïnterpreteerde taal.


4, Autoriteit 8%

PHP-handleiding op sterven :

Die – equivalent bij afsluiten

U kunt zelfs doen die;op dezelfde manier als exit;– met of zonder parens.

Het enige voordeel van het kiezen van die()over exit(), is mogelijk de tijd die u bespaart op het typen van een extra letter; -)


5, Autoriteit 7%

Hier is iets dat behoorlijk interessant is. Hoewel exit()en die()zijn equivalent, die()sluit de verbinding. exit()sluit niet de verbinding.

die():

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

exit():

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

Resultaten:

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

Incase gewoon in nood om hiermee rekening te houden met uw project.

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


Antwoord 6, autoriteit 3%

Functioneel gezien zijn ze identiek, maar ik gebruik ze in de volgende scenario’s om code leesbaar te maken:

Gebruik die() als er een fout is en moet de uitvoering stoppen.

bijv.
die( 'Oops! Something went wrong' );

Gebruik exit() als er geen fout is en de uitvoering moet stoppen.

bijv.
exit( 'Request has been processed successfully!' );


Antwoord 7, autoriteit 2%

Deze uitvoer van https://3v4l.orglaat zien dat die en exit functioneel identiek zijn.


Antwoord 8, autoriteit 2%

Deze paginazegt dat dieeen bondgenoot is van exit, dus ze zijn identiek. Maar legt ook uit dat:

Er zijn functies die van naam zijn veranderd vanwege een API-opschoning of een andere reden en de oude namen worden alleen bewaard als aliassen voor achterwaartse compatibiliteit. Het is meestal een slecht idee om dit soort aliassen te gebruiken, omdat ze onderhevig kunnen zijn aan veroudering of hernoemen, wat zal leiden tot ondraagbaar script.

Noem me dus paranoïde, maar er zal in de toekomst misschien geen diegaan.


Antwoord 9

Ze zijn in wezen hetzelfde, hoewel dit artikelsuggereert anders.


Antwoord 10

Functioneel zijn ze identiek. Dus om te kiezen welke je wilt gebruiken, is volledig een persoonlijke voorkeur. Semantisch in het Engels zijn ze anders. Sterven klinkt negatief. Als ik een functie heb die JSON-gegevens naar de client retourneert en het programma beëindigt, kan het vreselijk zijn als ik deze functie jsonDie() noem, en het is beter om het jsonExit() te noemen. Om die reden gebruik ik altijd exit in plaats van die.


Antwoord 11

Van wat ik weet als ik deze vraag hierbekijk

Er stond daar dat “in PHP er een duidelijk verschil is in de uitvoer van de header. In de onderstaande voorbeelden heb ik ervoor gekozen om een andere header te gebruiken, maar om het verschil tussen exit() en die() te laten zien, is dat niet het geval. zaak”, en getest (persoonlijk)


Antwoord 12

Het resultaat van de exit() functie en die() functie is altijd hetzelfde. Maar zoals uitgelegd in de alias-handleiding (http://php.net/manual/en/aliases. php), staat er dat de functie die() de exit-functie aanroept. Ik denk dat het hard gecodeerd is zoals hieronder:

function die($msg){
  exit($msg);
}

Dit is geen prestatieprobleem voor kleine, middelgrote en grote projecten, maar als een project miljarden vermenigvuldigen miljarden vermenigvuldigen miljarden processen heeft, is dit een zeer belangrijke prestatie-optimalisatiestatus.

Maar de meeste mensen denken niet dat dit een probleem is, want als je zoveel processen hebt, moet je meer aan een probleem denken dan wanneer een functie master of alias is.

Maar het exacte antwoord is dat; altijd hoofdfunctie is sneller dan alias.

Eindelijk; Alias-handleidingzegt dat je die niet langer mag gebruiken. Het is slechts een alias en is verouderd.

Het is meestal een slecht idee om dit soort aliassen te gebruiken, aangezien ze mogelijk zijn
gebonden aan veroudering of hernoemen, wat zal leiden tot ondraagbare
script. Deze lijst is bedoeld om diegenen te helpen die hun
oude scripts naar nieuwere syntaxis.


Antwoord 13

Iets dat ik in mijn scripts heb opgemerkt, is dat exit () het momenteel het uitvoeren van het script en de besturingscontrole terugsturen naar elk callingscript, terwijl het PHP PHP in zijn tracks zal stoppen. Ik zou zeggen dat dat nogal een groot verschil is?


14

Ze klinken ongeveer hetzelfde, maar de exit () stelt u ook in staat om de exitcode van uw PHP-script in te stellen.

Meestal heb je dit niet echt nodig, maar bij het schrijven van Console PHP-scripts, wil je misschien met bijvoorbeeld bash als het script alles op de juiste manier voltooide.

Dan kunt u exit () gebruiken en die later volgen.
Sterven () is echter niet ondersteunen dat.

sterven () bestaat altijd met code 0.
Dus in wezen een opdracht Die () doet het volgende:

<?php
echo "I am going to die";
exit(0);
?>

wat hetzelfde is als:

<?php
die("I am going to die");
?>

Other episodes