exit

ステータスコードかメッセージを返して現在のスクリプトを終了する

説明

never exit(stringint $status = 0)

スクリプトの実行を終了します。 シャットダウン関数オブジェクトのデストラクタ は、exit がコールされた場合にも実行されます。 ただし、finally ブロックは実行されません。

終了コード 0 は、そのタスクでプログラムが成功したことを表します。 他の値は、実行中に何らかのエラーが発生したことを表します。

exit は特殊な関数です。 パーサーに専用のトークンがあるため、文として使用して(つまり、括弧なしで)、 デフォルトのステータスコードでスクリプトを終了させることができます。

警告

グローバルな exit を無効にしたり、 名前空間つきの関数でシャドーイングすることはできません。

パラメータ

status
status が文字列の場合は、 この関数は終了直前に status を表示します。 PHP によって返される終了コードは 0 です。

statusint の場合は、 この関数は終了直前に status を表示します。

注意: 終了コードは 0 から 254 の範囲でなければならず、 終了コード 255 は PHP によって予約されているため使用できません。

警告

PHP 8.4.0 より前のバージョンでは、 exit は PHP の標準的な 型の相互変換のセマンティクスに基づいておらず、 また、strict_types 宣言も適用されませんでした。

また、resourcearray を含む、int 型以外の値は string にキャストされていました。 PHP 8.4.0 以降は、通常の型の相互変換が適用され、無効な値に対しては TypeError をスローします。

戻り値

この関数は PHP スクリプトを終了するため、値を返すことはありません。

変更履歴

バージョン 説明
8.4.0 exit は言語構造から正式な関数になったので、 通常の 型の相互変換 に従い、 strict_types 宣言も適用されるようになりました。また、名前付き引数や 可変関数 によって呼び出すこともできるようになりました。

例1 exit の基本的な使用例

<?php

// exit program normally
exit();
exit(0);

// exit with an error code
exit(1);

?>

例2 exitstringを渡す例

<?php

$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
    or exit("unable to open file ($filename)");

?>

例3 シャットダウン関数やデストラクタが実行される例

<?php
class Foo
{
    public function __destruct()
    {
        echo 'Destruct: ' . __METHOD__ . '()' . PHP_EOL;
    }
}

function shutdown()
{
    echo 'Shutdown: ' . __FUNCTION__ . '()' . PHP_EOL;
}

$foo = new Foo();
register_shutdown_function('shutdown');

exit();
echo 'これは出力されません。';
?>

上の例の出力は以下となります。

Shutdown: shutdown()
Destruct: Foo::__destruct()

例4 文としての exit

<?php

// exit program normally with exit code 0
exit;

?>

注意

警告

PHP 8.4.0 以降は、 exit は関数ではなく言語構造でした。 したがって、 可変関数名前付き引数 を使って関数を呼び出すことはできませんでした。