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


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

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


596
2017-11-25 06:28


origen


Respuestas:


No hay diferencia, son lo mismo.

Manual de PHP para exit:

Nota: Este constructo de lenguaje es equivalente a die().

Manual de PHP para die:

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


485
2017-11-25 06:30



DIFERENCIA EN ORIGEN

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


FUNCIONALMENTE EQUIVALENTE

die() y exit() son funciones equivalentes.

PHP Manual

Manual de PHP para die:

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

Manual de PHP para exit:

Nota: Este constructo de lenguaje es equivalente a die().

Manual de PHP para Lista de alias de función:

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


DIFERENTE EN OTROS IDIOMAS

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

De Sin embargo, otra queja de PHP:

... Como un codificador de C y Perl, estaba listo para responder, "¿Por qué, salir () solo fianza?   fuera del programa con un estado de salida numérico, mientras que die () imprime el   mensaje de error a stderr y sale con estado EXIT_FAILURE. "Pero luego   Recordé que estamos en un sintaxis desordenado de PHP.

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

Los diseñadores obviamente pensaron "Hmm, vamos a pedir prestado salir () de C. Y Perl   a la gente probablemente le guste si tomamos morir () como es de Perl también.   Oops! ¡Ahora tenemos dos funciones de salida! Vamos a hacerlo para 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",   simplemente más confuso. Los codificadores C y Perl continuarán usando exit () para   arroje un valor de salida entero solamente, y muera () para lanzar un mensaje de error   y salir con una falla. Principiantes y personas con PHP como primera lengua   probablemente se preguntará "umm, dos funciones de salida, cuál debería   ¿usar? "El manual no explica por qué hay exit () y die ().

En general, PHP tiene mucha redundancia extraña como esta - intenta   ser amigable con las personas que provienen de diferentes idiomas,   pero al hacerlo, crea una redundancia confusa.


177
2018-01-08 23:13



Como se dijo anteriormente, estos dos comandos producen el mismo token de analizador.

PERO

Hay una pequeña diferencia, y ese es el tiempo que le lleva al analizador devolver el token.

No he estudiado el analizador PHP, pero si es una lista larga de funciones que comienzan con "d" y una lista más corta que comienza con "e", entonces 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 pueda medirse a menos que tenga un entorno "perfecto" dedicado al análisis de php, y un montón de solicitudes con diferentes parámetros. Pero debe haber una diferencia, después de todo, PHP es un lenguaje interpretado.


50
2017-11-01 15:17



Manual de PHP en morir:

morir - Equivalente a la salida

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

La única ventaja de elegir die() encima exit(), puede ser el tiempo que ahorre al escribir una letra extra ;-)


35
2018-02-19 14:17



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

Aunque tengo una convención personal que cuando quiero finalizar la ejecución de un script cuando se espera y se desea, 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.), uso die("Something went wrong."); para "matar" el guion.

Cuando uso la salida:

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 yo veo die, Sé que me gustaría continuar la ejecución, pero no puedo o no debo debido a un error en la ejecución anterior.

Por supuesto, esto solo funciona cuando trabajas solo en un proyecto. Cuando hay más personas, nadie les impedirá usar die o exit donde no se ajusta a mis convenciones ...


25
2017-07-15 14:00



Esta página dice die es un alies de exit, entonces son idénticos Pero también explica eso:

hay funciones que cambiaron los nombres debido a una limpieza de la API u otro motivo, y los nombres antiguos solo se conservan como alias para compatibilidad con versiones anteriores. Por lo general, es una mala idea utilizar este tipo de alias, ya que pueden quedar obsoletos o cambiar de nombre, lo que dará lugar a un guión poco práctico.

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


9
2018-04-22 04:20



Son esencialmente lo mismo, aunque esto artículo sugerir lo contrario.


6
2017-11-25 06:32



Esta salida de https://3v4l.org demuestra que morir y salir son funcionalmente idénticos. enter image description here 


4
2018-06-12 08:58



Al usar la línea de comando,

 die("Error");

Se imprimirá en "Error" en STDOUT y saldrá con el código de error 0.

si quieres salir con el código de error 1, tienes que:

  fwrite(STDERR, "Error");
    exit(1);

Podría ser útil al ejecutar scripts php desde línea de comando o scripts de shell y desea ver si el script terminó con un código de salida distinto de cero. respuesta copiada de charanjeet de Quora


1
2017-07-03 07:39