(PHP 4, PHP 5, PHP 7, PHP 8)
exit — Termina o script atual com um código ou uma mensagem de status
Termina a execução do script.
Funções de desligamento
e destrutores de objeto
sempre serão executados mesmo que exit() seja chamada.
Entretanto, blocos finally
nunca são executados.
Um código de saída igual a 0
é usado para indicar que o programa
foi bem sucedido em suas tarefas.
Qualquer outro valor indica que algum tipo de erro ocorreu durante a execução.
exit() é uma função especial porque tem um token dedicado no analisador, e como tal pode ser usada como uma instrução (ou seja, sem parênteses) para terminar o script com o código de status padrão.
Não é possível desabilitar ou criar uma função com namespace ocultando a função global exit().
status
status
for uma string,
esta função exibe o status
logo antes de sair.
O código de saída retornado pelo PHP será 0
.
Se status
for um int,
o código de saída retornado pelo PHP será status
.
Nota: Códigos de saída devem estar no intervalo
0
a254
, o código de saída255
é reservado pelo PHP e não deve ser usado.
Antes do PHP 8.4.0, exit() não seguia o padrão do PHP de
conversão automática de tipos e
nem respeitava a
declaração
strict_types
.
Qualquer valor que não fosse do tipo int era convertido para string, incluindo valores dos tipos resource e array. A partir do PHP 8.4.0, ela segue a conversão automática de tipos e lança uma exceção do tipo TypeError para valores inválidos.
Como a função termina o script PHP, nenhum valor é retornado.
Versão | Descrição |
---|---|
8.4.0 |
exit() agora é uma função verdadeira,
portanto segue a
conversão automática de tipos usual,
é afetada pela declaração
strict_types ,
pode ser chamada com argumentos nomeados, e pode ser uma
função variável.
|
Exemplo #1 Exemplo básico de exit()
<?php
// sai do programa normalmente
exit();
exit(0);
// sai com um código de erro
exit(1);
?>
Exemplo #2 Exemplo de exit() com uma string
<?php
$filename = '/caminho/para/arquivo-de-dados';
$file = fopen($filename, 'r')
or exit("não foi possível abrir o arquivo ($filename)");
?>
Exemplo #3 Funções de desligamento e destrutores de objeto são executados independentemente
<?php
class Foo
{
public function __destruct()
{
echo 'Destrutor: ' . __METHOD__ . '()' . PHP_EOL;
}
}
function shutdown()
{
echo 'Desligamento: ' . __FUNCTION__ . '()' . PHP_EOL;
}
$foo = new Foo();
register_shutdown_function('shutdown');
exit();
echo 'Este texto não será mostrado.';
?>
O exemplo acima produzirá:
Desligamento: shutdown() Destrutor: Foo::__destruct()
Exemplo #4 exit() como uma instrução
<?php
// sai do programa normalmente com um código de saída igual a 0
exit;
?>
Antes do PHP 8.4.0, exit() era uma construção de linguagem e não uma função, portanto não era possível chamá-la usando funções variáveis, ou argumentos nomeados.