exit
ステータスコードかメッセージを返して現在のスクリプトを終了する
説明
never exit(stringint $status
= 0)
スクリプトの実行を終了します。
シャットダウン関数
や オブジェクトのデストラクタ
は、exit がコールされた場合にも実行されます。
ただし、finally
ブロックは実行されません。
終了コード 0
は、そのタスクでプログラムが成功したことを表します。
他の値は、実行中に何らかのエラーが発生したことを表します。
exit は特殊な関数です。
パーサーに専用のトークンがあるため、文として使用して(つまり、括弧なしで)、
デフォルトのステータスコードでスクリプトを終了させることができます。
警告
グローバルな exit を無効にしたり、
名前空間つきの関数でシャドーイングすることはできません。
パラメータ
-
status
-
status
が文字列の場合は、
この関数は終了直前に status
を表示します。
PHP によって返される終了コードは 0
です。
status
が int の場合は、
この関数は終了直前に status
を表示します。
注意:
終了コードは 0
から 254
の範囲でなければならず、
終了コード 255
は PHP によって予約されているため使用できません。
警告
PHP 8.4.0 より前のバージョンでは、 exit は PHP の標準的な
型の相互変換のセマンティクスに基づいておらず、
また、strict_types
宣言も適用されませんでした。
また、resource や array を含む、int 型以外の値は
string にキャストされていました。
PHP 8.4.0 以降は、通常の型の相互変換が適用され、無効な値に対しては
TypeError をスローします。
戻り値
この関数は PHP スクリプトを終了するため、値を返すことはありません。
例
例1 exit の基本的な使用例
<?php
// exit program normally
exit();
exit(0);
// exit with an error code
exit(1);
?>
例2 exit にstringを渡す例
<?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 は関数ではなく言語構造でした。
したがって、 可変関数 や 名前付き引数 を使って関数を呼び出すことはできませんでした。