usar - php exit vs die




¿Cuáles son las diferencias entre die() y exit() en PHP? (12)

DIFERENCIA EN ORIGEN

La diferencia entre die() y exit() en PHP es su origen .

FUNCIONALMENTE EQUIVALENTE

die() y exit() son funciones equivalentes.

Manual de PHP

Manual de PHP para die() :

Esta construcción de lenguaje es equivalente a exit() .

Manual de PHP para exit() :

Nota: esta construcción de lenguaje es equivalente a die() .

Manual de PHP para la php.net/manual/en/aliases.php :

die() es un alias para la función master exit()

DIFERENTE EN OTROS IDIOMAS

die() y exit() son diferentes en otros idiomas pero en PHP son idénticos.

De beastwithin.org/users/wwwwolf/code/phprant.html :

... Como codificador de C y Perl, estaba listo para responder: "Por qué, exit () simplemente cierra el programa con un estado de salida numérico, mientras que die () imprime el mensaje de error a stderr y sale con el estado EXIT_FAILURE. " Pero luego recordé que estamos en la sintaxis desordenada de PHP.

En PHP, exit () y die () son idénticos.

Los diseñadores obviamente pensaron "Hmm, tomemos prestada exit () de C. Y a la gente de Perl probablemente le gustará si tomamos die () como también lo es de Perl . ¡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", solo que más confusas. Los codificadores C y Perl continuarán usando exit () para lanzar solo un valor de salida entero, y die () para lanzar un mensaje de error y salir con una falla. Los novatos y las personas de PHP como primer idioma probablemente se preguntarán "umm, dos funciones de salida, ¿cuál debería usar?" El manual no explica por qué hay exit () y die ().

En general, PHP tiene una gran cantidad de redundancias extrañas como esta: trata de ser amigable con las personas que provienen de diferentes idiomas, pero al hacerlo, crea una redundancia confusa.

¿Cuáles son las diferencias entre las funciones die() y exit() en PHP ?

Creo que ambos tienen la misma funcionalidad, pero dudo que haya algo diferente en ambos ... ¿qué es?


Algo que he notado en mis scripts al menos es que exit () detendrá el script que se está ejecutando y pasará el control a cualquier script de llamada, mientras que die detendrá a php en sus pistas. Yo diría que es una gran diferencia?


Como se indicó anteriormente, estos dos comandos producen el mismo token de 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 de PHP, pero si se trata de una larga lista de funciones que comienzan con "d" y una lista más corta que comienza con "e", debe haber una penalización de tiempo buscando el nombre de la función para las funciones que comienzan con " mi". Y puede haber otras diferencias debido a cómo se verifica todo el nombre de la función.

Dudo que sea medible a menos que tenga un entorno "perfecto" dedicado al análisis de PHP, y muchas solicitudes con diferentes parámetros. Pero debe haber una diferencia, después de todo, PHP es un lenguaje interpretado.


Como todas las otras respuestas correctas dicen, die y exit son idénticos / alias.

Aunque tengo una convención personal de que cuando quiero finalizar la ejecución de un script cuando se espera y desea, utilizo exit; . Y cuando necesito finalizar la ejecución debido a algunos problemas (no se pudo conectar a db, no se puede escribir en el archivo, etc.), uso die("Something went wrong."); Para "matar" el guión.

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 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 );

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 en un proyecto solo. Cuando haya más personas, nadie evitará que usen die o exit donde no se ajuste a mis convenciones ...


De lo que sé cuando veo esta pregunta here

Dijo que "en PHP, hay una clara diferencia 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 () eso no importa", y probado (personalmente)


El resultado de la función exit () y la función die () son siempre iguales. Pero como se explica en la página de manual de alias ( php.net/manual/en/aliases.php ), dice que la función die () llama a la función exit. Creo que está codificado como el siguiente:

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 multiplicando miles de millones de procesos de billones, esto ocurre en un estado muy importante de optimización del rendimiento.

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 maestra o alias.

Pero, la respuesta exacta es esa; La función maestra siempre es más rápida que el alias.

Finalmente; php.net/manual/en/aliases.php dice eso, ya no puedes usar die. Es solo un alias, y está en desuso.

Por lo general, es una mala idea usar este tipo de alias, ya que pueden estar sujetos a obsolescencia o cambio de nombre, lo que llevará a una secuencia de comandos no portátil. Esta lista se proporciona para ayudar a aquellos que desean actualizar sus scripts antiguos a una sintaxis más nueva.


En w3schools Quiz: ¿Las funciones die () y exit () hacen exactamente lo mismo? mi respuesta es falsa Esa es la respuesta incorrecta. La respuesta correcta es verdadera.

Aquí está la captura de pantalla:


Esta salida de https://3v4l.org demuestra que die y exit son funcionalmente idénticos.


Manual de PHP en el die() :

morir - Equivalente a salir

Incluso puedes hacer die; de la misma manera que la exit; - Con o sin parens.

La única ventaja de elegir die() sobre exit() , puede ser el tiempo que le queda al escribir una letra adicional ;-)


No hay diferencia, son lo mismo.

Manual de PHP para exit :

Nota: esta construcción de lenguaje es equivalente a die() .

Manual de PHP para die() :

Esta construcción de lenguaje es equivalente a exit .


Suenan casi igual, sin embargo, exit () también le permite establecer el código de salida de su script PHP.

Por lo general, realmente no necesita esto, pero al escribir scripts de la consola en PHP, es posible que desee verificar, por ejemplo, Bash si el script completó todo de la manera correcta.

Luego puedes usar exit () y atrapar eso más adelante. Die () sin embargo, no soporta 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");
?>

php.net/manual/en/aliases.php dice que die es una alies de exit , por lo que son idénticos. Pero también explica que:

hay funciones que cambiaron los nombres debido a una limpieza de API o algún otro motivo y los nombres antiguos solo se guardan como alias para la compatibilidad con versiones anteriores. Por lo general, es una mala idea usar este tipo de alias, ya que pueden estar sujetos a obsolescencia o cambio de nombre, lo que llevará a una secuencia de comandos no portátil.

Entonces, llámame paranoico, pero puede que no haya die en el futuro.







die