Respuestas:
No hay diferencia, son lo mismo.
Manual PHP para exit
:
Nota: Esta construcción de lenguaje es equivalente a
die()
.
Manual PHP para die
:
Esta construcción del lenguaje es equivalente a
exit()
.
die
para paradas relacionadas con errores y exit
para todos los demás escenarios. Simplemente parece fluir mejor al leer el código.
die
es mucho más rápido de escribir que exit
... Estoy comenzando a usarlo exit
porque es más legible para los programadores que no son PHP, pero die
es más rápido de escribir cuando estás en prisa. Además, por mi forma de escribir, no tengo que cambiar la posición de mis manos para escribir die
.
La diferencia entre die()
y exit()
en PHP es su origen .
exit()
es de exit()
en C .die()
es de die
en Perl .die()
y exit()
son funciones equivalentes.
Manual PHP para die
:
Esta construcción del lenguaje es equivalente a
exit()
.
Manual PHP para exit
:
Nota: Esta construcción de lenguaje es equivalente a
die()
.
Manual PHP para la lista de alias de funciones :
die()
y exit()
son diferentes en otros lenguajes pero en PHP son idénticos.
Desde otro despotricar de PHP :
... Como codificador de C y Perl, estaba listo para responder: "¿Por qué, exit () simplemente abandona el programa con un estado de salida numérico, mientras que die () imprime el mensaje de error en stderr y sale con el estado EXIT_FAILURE. " Pero luego recordé que estamos en la tierra de sintaxis desordenada de PHP.
En PHP, exit () y die () son idénticos.
Los diseñadores obviamente pensaron "Hmm, tomemos prestada la salida () de C. Y a la gente de Perl probablemente les gustará si tomamos die () como es de Perl también. ¡Vaya! ¡Tenemos dos funciones de salida ahora! Hagamos que ambos puede tomar una cadena o un entero como argumento y hacerlos idénticos ".
El resultado final es que esto realmente no hizo las cosas "más fáciles", sino más confusas. Los codificadores C y Perl continuarán usando exit () para arrojar un valor de salida entero solamente, y die () para arrojar un mensaje de error y salir con una falla. Los novatos y la gente de PHP como primer idioma probablemente se preguntarán "umm, dos funciones de salida, ¿cuál debo usar?" El manual no explica por qué hay exit () y die ().
En general, PHP tiene mucha redundancia extraña como esta: trata de ser amigable con las personas que provienen de diferentes entornos de lenguaje, pero al hacerlo, crea redundancia confusa.
exit()
no cierra la conexión mientras lo die()
hace, parece relevante.
Como se indicó anteriormente, estos dos comandos producen el mismo token analizador.
PERO
Hay una pequeña diferencia, y ese es el tiempo que tarda el analizador en devolver el token.
No he estudiado el analizador PHP, pero si es una larga lista de funciones que comienzan con "d" y una lista más corta que comienza con "e", entonces debe haber una penalización de tiempo al buscar el nombre de la función para las funciones que comienzan con " mi". Y puede haber otras diferencias debido a cómo se verifica el nombre completo de la función.
Dudo que sea medible a menos que tenga un entorno "perfecto" dedicado a analizar PHP y muchas solicitudes con diferentes parámetros. Pero debe haber una diferencia, después de todo, PHP es un lenguaje interpretado.
Manual PHP en troquel :
morir - Equivalente a salir
Incluso puede hacer die;
lo mismo que exit;
con o sin parens.
La única ventaja de elegir die()
más exit()
, podría ser el momento de repuesto en la que escribir una carta adicional ;-)
php -a
) die;
, die();
, exit;
y exit();
no tienen ningún efecto, mientras que exit
(sin coma) sale del modo interactivo.
Como todas las otras respuestas correctas dicen, die
y exit
son idénticas / alias.
Aunque tengo una convención personal que cuando quiero finalizar la ejecución de un script cuando se espera y se desea, lo uso exit;
. Y cuando necesito finalizar la ejecución debido a algunos problemas (no pude conectarme a db, no puedo escribir en el archivo, etc.), lo uso die("Something went wrong.");
para "matar" el script.
Cuando uso 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.
Cuando uso morir:
$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 );
De esta manera, cuando veo exit
en algún punto de mi código, sé que en este punto quiero salir porque la lógica termina aquí. Cuando veo die
, sé que me gustaría continuar con la ejecución, pero no puedo o no debo debido a un error en la ejecución anterior.
Por supuesto, esto solo funciona cuando se trabaja solo en un proyecto. Cuando haya más personas, nadie les impedirá usar die
o exit
cuando no se ajuste a mis convenciones ...
Aquí hay algo que es bastante interesante. Aunque exit()
y die()
son equivalentes, die()
cierra la conexión. exit()
no cierra la conexión
die()
:
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
exit()
:
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
Resultados:
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
Solo por si necesita tener esto en cuenta para su proyecto.
exit
y die
funcionan de la misma manera, ambos cierran la conexión.
Funcionalmente, son idénticos, pero los uso en los siguientes escenarios para que el código sea legible:
Use die () cuando haya un error y deba detener la ejecución.
p.ej
die( 'Oops! Something went wrong' );
Use exit () cuando no haya un error y deba detener la ejecución.
p.ej
exit( 'Request has been processed successfully!' );
Esta página dice que die
es un alias de exit
, por lo que son idénticos. Pero también explica que:
hay funciones que cambiaron los nombres debido a una limpieza de la API o alguna otra razón y los nombres antiguos solo se mantienen como alias para la compatibilidad con versiones anteriores. Por lo general, es una mala idea usar este tipo de alias, ya que pueden estar vinculados a la obsolescencia o el cambio de nombre, lo que conducirá a una secuencia de comandos no compatible.
Entonces, llámame paranoico, pero puede que no haya nada die
en el futuro.
is_int()
y is_integer()
son igualmente buenos, por ejemplo. Mirando el php-src
historial de confirmación en GitHub, la die()
construcción ha estado en PHP al menos desde 1999 cuando se convirtió en un repositorio SVN, y probablemente durante el tiempo que ha existido el lenguaje. Parece absurdo imaginar que alguna vez será desaprobado.
exit
en el futuro. O puede que no haya die
en el futuro"
Este resultado de https://3v4l.org demuestra que morir y salir son funcionalmente idénticos.
Son esencialmente lo mismo, aunque este artículo sugiere lo contrario.
Funcionalmente, son idénticos. Por lo tanto, elegir cuál usar es una preferencia totalmente personal. Semánticamente en inglés, son diferentes. Morir suena negativo. Cuando tengo una función que devuelve datos JSON al cliente y termina el programa, puede ser horrible si llamo a esta función jsonDie (), y es más apropiado llamarla jsonExit (). Por esa razón, siempre uso salir en lugar de morir.
Por lo que sé cuando miro esta pregunta aquí
Dijo que "en PHP, hay una diferencia clara en la salida del Encabezado. En los ejemplos a continuación, elegí usar un encabezado diferente, pero para mostrar la diferencia entre exit () y die () que no importa", y probado (personalmente)
En w3schools Quiz: ¿las funciones die () y exit () hacen exactamente lo mismo? Mi respuesta es falsa. Esa es una respuesta incorrecta. La respuesta correcta es verdadera.
Algo que he notado en mis scripts al menos es que exit () detendrá el script que se está ejecutando actualmente y pasará el control a cualquier script de llamada, mientras que die detendrá el php en sus pistas. Yo diría que es una gran diferencia?
El resultado de la función exit () y la función die () es siempre igual. Pero como se explica en la página del manual de alias ( http://php.net/manual/en/aliases.php ), dice que la función die () llama a la función de salida. Creo que está codificado como a continuación:
function die($msg){
exit($msg);
}
Este no es un problema de rendimiento para proyectos pequeños, medianos y grandes, pero si el proyecto tiene miles de millones de procesos de multiplicación de miles de millones, esto sucede con un estado de optimización de rendimiento muy importante.
Pero la mayoría de la gente no cree que esto sea un problema, porque si tiene tantos procesos, debe pensar en más problemas que si una función es master o alias.
Pero, la respuesta exacta es esa; siempre la función maestra es más rápida que el alias.
Finalmente; La página del manual de alias dice que ya no puede usar el dado. Es solo un alias y está en desuso.
Por lo general, es una mala idea usar este tipo de alias, ya que pueden estar vinculados a la obsolescencia o el cambio de nombre, lo que conducirá a una secuencia de comandos no compatible. Esta lista se proporciona para ayudar a aquellos que desean actualizar sus scripts antiguos a una sintaxis más nueva.
die()
No es una función separada. Es solo otro nombre de exit()
. Esta respuesta contiene declaraciones incorrectas sobre alias y su rendimiento.
Suenan casi igual, sin embargo, la salida () también le permite configurar el código de salida de su script PHP.
Por lo general, realmente no necesita esto, pero al escribir scripts PHP de consola, es posible que desee verificar, por ejemplo, con Bash, si el script completó todo de la manera correcta.
Luego puede usar exit () y capturarlo más adelante. Die () sin embargo no es compatible con eso.
Die () siempre existe con el código 0. Entonces, esencialmente un comando die () hace lo siguiente:
<?php
echo "I am going to die";
exit(0);
?>
Que es lo mismo que:
<?php
die("I am going to die");
?>
die
y exit
son idénticos (producen el mismo token analizador ( T_EXIT
) y se ejecutan con el mismo código). Si el parámetro es un entero, devolverá ese código al shell. Si no es así, lo generará y devolverá 0. Entonces, die
y exit
son literalmente alias para el otro.
so exit() is exit and die() is also exit :)