What are the differences between die()
and exit()
functions in PHP?
I think both have the same functionality, but I doubt there is something different in both... what is it?
What are the differences between die()
and exit()
functions in PHP?
I think both have the same functionality, but I doubt there is something different in both... what is it?
There's no difference - they are the same.
PHP Manual for exit
:
Note: This language construct is equivalent to
die()
.
PHP Manual for die
:
This language construct is equivalent to
exit()
.
die
for error related stops and exit
for all other scenarios. It just seems to flow better when reading the code. –
Creamcups die
is far faster to write than exit
... I'm starting to use exit
because it's more readable to non-PHP-programmers, but die
is just faster to type when you're in a hurry. Also, by the way I type, I don't have to change my hands' position to write die
. –
Ascarid exit(0)
for success and exit($non_zero)
for errors. –
Substage die()
even exists. –
Creamcups exit
over die
, or die
over exit
. I'm saying make up your mind and pick one. Either one is fine, don't mix both in the same codebase unless you're the only one developing / maintaining it. –
Substage die
instead of exit
(and I agree, it's there) then you should seriously consider switching to a keyboard layout like Dvorak - I think you'd really appreciate the speedup after the learning curve. –
Bimetallic die
and exit
! Check this page out: php.net/manual/en/aliases.php –
Undistinguished die()
–
Primordium The difference between die()
and exit()
in PHP is their origin.
exit()
is from exit()
in C.die()
is from die
in Perl.die()
and exit()
are equivalent functions.
PHP Manual for die
:
This language construct is equivalent to
exit()
.
PHP Manual for exit
:
Note: This language construct is equivalent to
die()
.
PHP Manual for List of Function Aliases:
die()
and exit()
are different in other languages but in PHP they are identical.
From Yet another PHP rant:
...As a C and Perl coder, I was ready to answer, "Why, exit() just bails off the program with a numeric exit status, while die() prints out the error message to stderr and exits with EXIT_FAILURE status." But then I remembered we're in messy-syntax-land of PHP.
In PHP, exit() and die() are identical.
The designers obviously thought "Hmm, let's borrow exit() from C. And Perl folks probably will like it if we take die() as is from Perl too. Oops! We have two exit functions now! Let's make it so that they both can take a string or integer as an argument and make them identical!"
The end result is that this didn't really make things any "easier", just more confusing. C and Perl coders will continue to use exit() to toss an integer exit value only, and die() to toss an error message and exit with a failure. Newbies and PHP-as-a-first-language people will probably wonder "umm, two exit functions, which one should I use?" The manual doesn't explain why there's exit() and die().
In general, PHP has a lot of weird redundancy like this - it tries to be friendly to people who come from different language backgrounds, but while doing so, it creates confusing redundancy.
As stated before, these two commands produce the same parser token.
BUT
There is a small difference, and that is how long it takes the parser to return the token.
I haven't studied the PHP parser, but if it's a long list of functions starting with "d", and a shorter list starting with "e", then there must be a time penalty looking up the function name for functions starting with "e". And there may be other differences due to how the whole function name is checked.
I doubt it will be measurable unless you have a "perfect" environment dedicated to parsing PHP, and a lot of requests with different parameters. But there must be a difference, after all, PHP is an interpreted language.
PHP manual on die:
die — Equivalent to exit
You can even do die;
the same way as exit;
- with or without parens.
The only advantage of choosing die()
over exit()
, might be the time you spare on typing an extra letter ;-)
php -a
) die;
, die();
, exit;
and exit();
have no effect, while exit
(without semicolon) exits interactive mode. –
Horsewhip die()/exit()
function still does what is described in its documentation: it outputs a message and terminates the current script. It terminates only the script, not the interpreter. The interpreter does what it usually does when a script ends: shows the prompt and waits for another script or a command. exit
without semicolon at the prompt is a command to the interpreter to terminate itself. You can also use quit
for the same purpose. –
Supertax Here is something that's pretty interesting. Although exit()
and die()
are equivalent, die()
closes the connection. exit()
doesn't close the connection.
die()
:
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
exit()
:
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
Results:
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
Just incase in need to take this into account for your project.
Credits: https://mcmap.net/q/55422/-php-utilizing-exit-or-die-after-header-quot-location-quot-duplicate
exit
and die
work the same way, they both close connection. –
Carthusian die;
or exit;
without parenthesis if you're not gonna print a message. –
Johnnie As all the other correct answers says, die
and exit
are identical/aliases.
Although I have a personal convention that when I want to end the execution of a script when it is expected and desired, I use exit;
. And when I need to end the execution due to some problems (couldn't connect to db, can't write to file etc.), I use die("Something went wrong.");
to "kill" the script.
When I use 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.
When I use 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 );
This way, when I see exit
at some point in my code, I know that at this point I want to exit because the logic ends here.
When I see die
, I know that I'd like to continue execution, but I can't or shouldn't due to error in previous execution.
Of course this only works when working on a project alone. When there is more people nobody will prevent them to use die
or exit
where it does not fit my conventions...
Functionality-wise they are identical but I use them in the following scenarios to make code readable:
Use die() when there is an error and have to stop the execution.
e.g.
die( 'Oops! Something went wrong' );
Use exit() when there is not an error and have to stop the execution.
e.g.
exit( 'Request has been processed successfully!' );
This output from https://3v4l.org demonstrates that die and exit are functionally identical.
This page says die
is an alies of exit
, so they are identical. But also explains that:
there are functions which changed names because of an API cleanup or some other reason and the old names are only kept as aliases for backward compatibility. It is usually a bad idea to use these kind of aliases, as they may be bound to obsolescence or renaming, which will lead to unportable script.
So, call me paranoid, but there may be no die
ing in the future.
is_int()
and is_integer()
are equally good for example. Looking at the php-src
commit history on GitHub, the die()
construct has been in PHP at least since 1999 when it was converted into an SVN repository, and probably for as long as the language has existed. It seems absurd to imagine that it will ever be deprecated. –
Recor exit
in the future. Or there may be no die
in the future" –
Substage They are essentially the same, though this article suggest otherwise.
die() is faster to type than exit();
Functionally, they are identical. So to choose which one to use is totally a personal preference. Semantically in English, they are different. Die sounds negative. When I have a function which returns JSON data to the client and terminate the program, it can be awful if I call this function jsonDie(), and it is more appropriate to call it jsonExit(). For that reason, I always use exit instead of die.
From what I know when I look at this question here
It said there that "in PHP, there is a distinct difference in Header output. In the examples below I chose to use a different header but for sake of showing the difference between exit() and die() that doesn't matter", and tested (personally)
Yes, they are identical twins
But some developers by convention use die
when something went wrong and exit
when the script must stop but everything is fine
© 2022 - 2024 — McMap. All rights reserved.
so exit() is exit and die() is also exit :)
– Avouch