Respostas:
Não há diferença - eles são os mesmos.
Manual do PHP para exit
:
Nota: Essa construção de idioma é equivalente a
die()
.
Manual do PHP para die
:
Essa construção de linguagem é equivalente a
exit()
.
die
para paradas relacionadas a erros e exit
para todos os outros cenários. Parece apenas fluir melhor ao ler o código.
die
é muito mais rápido escrever do que exit
... Estou começando a usar exit
porque é mais legível para programadores que não são PHP, mas die
é mais rápido para digitar quando você está em pressa. Além disso, pela maneira como digito, não preciso alterar a posição das minhas mãos para escrever die
.
A diferença entre die()
e exit()
no PHP é sua origem .
exit()
é a partir exit()
de C .die()
é a partir die
de Perl .die()
e exit()
são funções equivalentes.
Manual do PHP para die
:
Essa construção de linguagem é equivalente a
exit()
.
Manual do PHP para exit
:
Nota: Essa construção de idioma é equivalente a
die()
.
Manual do PHP para aliases de funções :
die()
e exit()
são diferentes em outras linguagens, mas no PHP são idênticas.
... Como codificador C e Perl, eu estava pronto para responder: "Ora, exit () apenas interrompe o programa com um status de saída numérico, enquanto die () imprime a mensagem de erro em stderr e sai com o status EXIT_FAILURE. " Mas então me lembrei de que estamos na área de sintaxe confusa do PHP.
No PHP, exit () e die () são idênticos.
Os designers obviamente pensaram "Hmm, vamos pegar emprestado exit () do C. E o pessoal do Perl provavelmente vai gostar se pegarmos die () como é do Perl também. Opa! Temos duas funções de saída agora! Vamos fazer com que ambos pode pegar uma string ou um número inteiro como argumento e torná-los idênticos! "
O resultado final é que isso realmente não tornou as coisas "mais fáceis", apenas mais confusas. Os codificadores C e Perl continuarão usando exit () para lançar apenas um valor inteiro de saída e die () para lançar uma mensagem de erro e sair com falha. Iniciantes e pessoas com PHP como primeira língua provavelmente se perguntarão "umm, duas funções de saída, qual devo usar?" O manual não explica por que existe exit () e die ().
Em geral, o PHP tem uma redundância estranha como essa - tenta ser amigável para pessoas que têm diferentes origens de linguagem, mas, ao fazê-lo, cria redundância confusa.
exit()
não fecha a conexão enquanto o die()
faz, parece relevante.
Como afirmado anteriormente, esses dois comandos produzem o mesmo token do analisador.
MAS
Há uma pequena diferença, e é quanto tempo leva para o analisador retornar o token.
Eu não estudei o analisador PHP, mas se for uma lista longa de funções começando com "d" e uma lista mais curta começando com "e", deve haver uma penalidade de tempo procurando o nome da função para funções começando com " e ". E pode haver outras diferenças devido à forma como o nome inteiro da função é verificado.
Duvido que seja mensurável, a menos que você tenha um ambiente "perfeito" dedicado à análise do PHP e muitas solicitações com parâmetros diferentes. Mas deve haver uma diferença, afinal, PHP é uma linguagem interpretada.
Manual do PHP sobre die :
die - Equivalente a sair
Você pode até fazer die;
da mesma maneira queexit;
- com ou sem parênteses.
A única vantagem de escolher die()
mais exit()
, pode ser o momento você poupar em digitando uma letra extra ;-)
php -a
) die;
, die();
, exit;
e exit();
não têm nenhum efeito, enquanto exit
(sem vírgula) sai do modo interativo.
Como todas as outras respostas corretas dizem, die
e exit
são idênticos / aliases.
Embora eu tenha uma convenção pessoal de que, quando eu quiser terminar a execução de um script quando for esperado e desejado, eu o uso exit;
. E quando preciso finalizar a execução devido a alguns problemas (não consegui conectar ao db, não consigo gravar no arquivo etc.), uso die("Something went wrong.");
para "matar" o script.
Quando eu 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.
Quando eu uso morrer:
$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 );
Dessa forma, quando vejo exit
em algum momento do meu código, sei que neste momento quero sair porque a lógica termina aqui. Quando vejo die
, sei que gostaria de continuar a execução, mas não posso ou não devo devido a erro na execução anterior.
Claro que isso só funciona quando se trabalha em um projeto sozinho. Quando há mais pessoas, ninguém as impede de usar die
ou exit
onde não se encaixa nas minhas convenções ...
Aqui está algo que é bastante interessante. Embora exit()
e die()
sejam equivalentes, die()
fecha a conexão. exit()
não fecha a conexão.
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
Basta considerar a necessidade de levar isso em conta no seu projeto.
exit
e die
funcionam da mesma maneira, ambos estreita ligação.
Em termos de funcionalidade, eles são idênticos, mas eu os uso nos seguintes cenários para tornar o código legível:
Use die () quando houver um erro e precise interromper a execução.
por exemplo
die( 'Oops! Something went wrong' );
Use exit () quando não houver um erro e precise interromper a execução.
por exemplo
exit( 'Request has been processed successfully!' );
Esta página diz que die
é um aliado de exit
, então eles são idênticos. Mas também explica que:
existem funções que mudaram de nome devido a uma limpeza de API ou por algum outro motivo e os nomes antigos são mantidos apenas como aliases para compatibilidade com versões anteriores. Geralmente, é uma má idéia usar esse tipo de alias, pois eles podem estar vinculados à obsolescência ou renomeação, o que levará a scripts não portáveis.
Então, me chame de paranóica, mas pode não haver nada die
no futuro.
is_int()
e is_integer()
é igualmente bom, por exemplo. Observando o php-src
histórico de consolidação no GitHub, a die()
construção está no PHP desde 1999, quando foi convertida em um repositório SVN, e provavelmente pelo tempo em que a linguagem existir. Parece absurdo imaginar que isso será depreciado.
exit
no futuro. Ou pode não haver die
no futuro"
Esta saída de https://3v4l.org demonstra que die e exit são funcionalmente idênticos.
Eles são essencialmente os mesmos, embora este artigo sugira o contrário.
Funcionalmente, eles são idênticos. Portanto, escolher qual usar é uma preferência totalmente pessoal. Semanticamente em inglês, eles são diferentes. Morrer soa negativo. Quando tenho uma função que retorna dados JSON para o cliente e encerra o programa, pode ser terrível se eu chamar essa função jsonDie (), e é mais apropriado chamá-la de jsonExit (). Por esse motivo, eu sempre uso exit em vez de morrer.
Pelo que sei quando olho para esta pergunta aqui
Ele disse que "no PHP, há uma diferença distinta na saída do cabeçalho. Nos exemplos abaixo, eu escolhi usar um cabeçalho diferente, mas para mostrar a diferença entre exit () e die () que não importa", e testado (pessoalmente)
No questionário do w3schools: As funções die () e exit () fazem exatamente a mesma coisa? minha resposta é falsa. Essa é uma resposta incorreta. A resposta certa é verdadeira.
Algo que eu notei nos meus scripts pelo menos é que exit () interrompe o script atualmente em execução e passa o controle de volta para qualquer script de chamada, enquanto o die interrompe o php em suas trilhas. Eu diria que é uma grande diferença?
O resultado da função exit () e da função die () é sempre o mesmo. Mas, como explicado na página de manual de alias ( http://php.net/manual/en/aliases.php ), ele diz que a função die () chama a função exit. Eu acho que é codificado como abaixo:
function die($msg){
exit($msg);
}
Isso não é um problema de desempenho para projetos pequenos, médios e grandes, mas se o projeto tiver bilhões, bilhões, processos bilhões, bilhões de processos serão multiplicados, isso acontecerá com um estado de otimização de desempenho muito importante.
Mas muitas pessoas não acham que isso é um problema, porque se você tiver tantos processos, deverá pensar em mais problemas do que se uma função for mestre ou alias.
Mas, a resposta exata é essa; A função principal é sempre mais rápida que o alias.
Finalmente; A página de manual do alias diz que você não pode mais usar o dado. É apenas um alias e está obsoleto.
Geralmente, é uma má idéia usar esse tipo de alias, pois eles podem estar vinculados à obsolescência ou renomeação, o que levará a scripts não portáveis. Esta lista é fornecida para ajudar aqueles que desejam atualizar seus scripts antigos para uma sintaxe mais recente.
die()
não é uma função separada. É apenas outro nome de exit()
. Esta resposta contém instruções incorretas sobre aliases e seu desempenho.
Eles soam iguais, no entanto, o exit () também permite definir o código de saída do seu script PHP.
Geralmente, você realmente não precisa disso, mas ao escrever scripts PHP no console, convém verificar, por exemplo, o Bash, se o script concluiu tudo da maneira correta.
Então você pode usar exit () e capturar isso mais tarde. Die () no entanto não suporta isso.
Die () sempre existe com o código 0. Portanto, essencialmente, um comando die () faz o seguinte:
<?php
echo "I am going to die";
exit(0);
?>
Qual é o mesmo que:
<?php
die("I am going to die");
?>
die
e exit
são idênticos (eles produzem o mesmo token do analisador ( T_EXIT
) e são executados pelo mesmo código). Se o parâmetro for um número inteiro, ele retornará esse código para o shell. Se não estiver, ele irá imprimir-lo e retornar 0. Assim, die
e exit
são, literalmente, aliases para cada-outro.
so exit() is exit and die() is also exit :)