Pregunta

He visto algún código hacer esto:

if(something){
    echo 'exit from program';
    die;
}
...more code

Y otros que simplemente usan die:

if(something)   die('exit from program');
...more code

¿Hay alguna diferencia inherente en cuándo finalizaría el programa, debería estar al tanto del código que viene después de él? etc.

ACTUALIZAR

Estoy preguntando principalmente, si se trata de un estilo de codificación, o si hay una razón real por la cual algunos están codificados de una manera en comparación con otra. No estoy preguntando cuál es la diferencia entre exit y die es.

¿Fue útil?

Solución

No, no hay diferencia; Ambos escribirán "exit" para stdout y finaliza el programa.

Preferiría el die("exit") Método, ya que es menos tipeo, más fácil de comentar y semánticamente más claro.

En cuanto a la "velocidad", ¿por qué te importaría que sea más rápido? ¿Necesita que su programa muera muy rápido?

Re: tu actualización

... Cualquier diferencia inherente en cuándo terminaría el programa ...

Hay no diferencia, inherente o de otro tipo. Son idénticos. La segunda opción, die('exit'), es una sola declaración, por lo que no requiere aparatos ortopédicos cuando se usa con un if declaración; Esto no tiene nada que ver con el die Y todo lo que tiene que ver con bloques y control de flujo en idiomas de estilo C.

Re: tu comentario/segunda actualización

De donde tu die es una cuestión de preferencia personal. Como ya he dicho, son idénticos. Elegiría la segunda opción por las razones enumeradas anteriormente: más corta, más clara, más limpia, que equivale a "mejor" en mi opinión.

La diferencia entre exit y die es eso exit le permite devolver un estado distinto de cero, mientras die Devuelve 0. Ninguna de las funciones es "mejor", tienen diferentes propósitos.

Otros consejos

ninguna diferencia.

Y por qué pedir diferencia de velocidad ya que estás morir.

Hay una diferencia chicos. Die () se puede usar con otras funciones falla, mientras que el eco necesitaría atrapar como un error o excepción.

$query = mysql_query("SELECT * FROM tablename") OR DIE(mysql_error());

Te da una secuencia inmediata de captura/dado.

Para el ejemplo específico que publicó, son iguales, ya que el $status es una cadena, pero como el manual dice que este no siempre sea el caso:

Si el estado es una cadena, esta función imprime el estado justo antes de salir.

Si el estado es un entero, ese valor se utilizará como el estado de salida y no se imprimirá. Los estados de salida deben estar en el rango 0 a 254, el estado de salida 255 está reservado por PHP y no se utilizará. El estado 0 se utiliza para terminar el programa con éxito.

Entonces si en lugar de 'exit from program' Querías emitir, digamos 42 Realmente necesitarías hacer:

echo 42; die();

El lenguaje construye exit() y die() son equivalentes, al menos según el manual de PHP. Utilizo Exit () cuando se debe alcanzar esa línea y quiero que el script se detenga en ese punto. Die () por otro lado es para situaciones que no deberían ocurrir. Eso es justo lo que se siente más natural para mí, no tienes que estar de acuerdo.

Principalmente es estilo de codificación. Sin embargo, si está emitiendo mensajes de depuración, Echo, entonces morir, es mejor:

echo "The frobnuticator blew up!";
die;

convertirse en

//echo "The frobnusticator blew up!";
die;

Por supuesto, lo más probable es que tengas

if ($debug) echo "The frobnusticator blew up!";
die;

Que es mucho más fácil en (mi | el) ojo que

die($debug?"The frobnusticator blew up!":"");

Del manual de PHP:

Nota: Esta construcción del idioma es equivalente a morir ().

Pero aún así hay diferencia entre morir y salida :

Usando die () puede publicar una cadena: die ("ocurrió un error");

El mismo resultado con usar Exit ()

<?php
    echo("An error occurred <br>");
    exit(0);
?>

O si eres CLI o unix shell:

Usando PHP en la línea de comandos, Die ("ocurrió un error") simplemente imprime "un error ocurrido" en Stdout y termina el programa con un código de salida normal de 0.

<?php
    fwrite(STDERR, "An error occurred \n");
    exit(0); //
?>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top