exit
En esta página
exit
Terminar el script en curso con un código de estado o un mensaje
Descripción#
exit([string $status]): never
```php
Termina el script actual. Las [funciones de cierre](#function.register-shutdown-function) y los [destructores de objetos](#language.oop5.decon.destructor) siempre se ejecutarán incluso si `exit` es llamado. Sin embargo, los bloques [`finally`](#language.exceptions.finally) nunca se ejecutan.
Un código de salida de `0` se utiliza para indicar que el programa ha completado sus tareas correctamente. Cualquier otro valor indica que ocurrió un error durante la ejecución.
`exit` es una función especial, ya que dispone de un token dedicado en el analizador sintáctico. Puede ser utilizada como una instrucción (es decir, sin paréntesis) para terminar el script con el código de estado por defecto.
> [!CAUTION]
> No es posible desactivar o crear una función en un espacio de nombres que reemplace la función global `exit`.
## Parámetros
`status`
Si `status` es un string, esta función muestra `status` justo antes de salir. El código de salida devuelto por PHP es `0`.
Si `status` es un `int`, el código de salida devuelto por PHP será `status`.
> [!NOTE]
> Los códigos de salida deben estar comprendidos entre `0` y `254`. El código de salida `255` está reservado por PHP y no debe ser utilizado.
> [!WARNING]
> Antes de PHP 8.4.0, `exit` no respetaba la [lógica habitual de manipulación de tipos](#language.types.type-juggling.function) de PHP ni la declaración [`strict_types`](#language.types.declarations.strict).
>
> Cualquier valor no `int` era convertido a `string`, incluyendo los valores de tipo `resource` y `array`. A partir de PHP 8.4.0, la función sigue la gestión estándar de tipos y genera una TypeError para los valores no válidos.
## Valores devueltos
Como esta función termina el script PHP, ningún valor es devuelto.
## Historial de cambios
| Versión | Descripción |
|----|----|
| 8.4.0 | `exit` es ahora una verdadera función, por lo tanto sigue la lógica habitual de [manipulación de tipos](#language.types.type-juggling.function), es afectada por la declaración [`strict_types`](#language.types.declarations.strict), puede ser llamada con argumentos nombrados y ser utilizada como una [función variable](#functions.variable-functions). |
| 8.4.0 | Una llamada a `exit` sin parámetros dentro de [funciones de cierre](#function.register-shutdown-function) o de [destructores de objetos](#language.oop5.decon.destructor) restablece ahora el código de salida a `0`; anteriormente se conservaba el código de salida establecido por una llamada anterior a `exit`. |
## Ejemplos
Ejemplo básico de la función `exit`
Ejemplo de `exit` con un `string`
Ejemplo de ejecución de funciones de cierre y destructores de objetos
El ejemplo anterior mostrará:
Cierre : shutdown()
Destrucción : Foo::__destruct()
`exit` como instrucción
```php
Notas#
[!WARNING] Antes de PHP 8.4.0,
exitera una construcción del lenguaje y no una función, por lo tanto no era posible llamarla utilizando funciones variables, o argumentos nombrados.
Véase también#
register_shutdown_function
Funciones de cierre
destructores de objetos