PHPでプログラムを強制終了させるexitの使い方(ステータスかエラー文を出力)

PHP-exit

こんにちはフロントエンドエンジニアのまさにょんです!

今回は、PHPでプログラムを強制終了させるexitの使い方について解説していきます。

PHPでプログラムを強制終了させるexitの使い方

PHPのexit関数とは?

exit()は、何かしらの理由でプログラムを強制終了させたいときに使用するPHPの関数です。

次の説明にあるとおり、引数には文字列か数値(0-254まで)を渡せます。

また、exit()では、0は正常終了扱い、0以上の数値は異常終了扱いになっています。

exit — メッセージを出力し、現在のスクリプトを終了する

[ 説明 ]

exit(string $status = ?): void

exit(int $status): void

スクリプトの実行を終了します。 

シャットダウン関数 や オブジェクトのデストラクタ は、exit がコールされた場合にも実行されます。

exit は言語構造です。 status を指定しない場合は括弧なしでコールできます。

[ パラメーター ]

  1. status

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

status が int の場合は その値が終了ステータスとして使われ、表示はされません。

終了ステータスは 0 から 254 までの値でなければなりません。

終了ステータス 255 は PHP に予約されており、使用してはいけません。

ステータス 0 は、 プログラムを正常終了させる際に使用します。

[ 戻り値 ]

値を返しません。

引用元: PHP-Manual: exit

exit(文字列)で、プログラムを強制終了&コンソールに文字列を出力する

exit(文字列) で文字列を引数にした場合は、コンソール画面に渡した文字列を出力することができます。

強制終了させるだけでなくエラーメッセージなどを表示させられるので、エラーの理由を表示させたい時に役立ちます。

<?php

// プログラムを強制終了させたいときに、役立ちます!

echo 'プログラム起動' . "\n";
 
exit('プログラムを強制的に終了します');
 
echo 'この部分は出力されない・・・' . "\n";

// [ 実行結果 ]
// プログラム起動
// プログラムを強制的に終了します

ちなみに、Macのターミナル画面で、echo $?を使用すると0が帰ってくるので、

文字列を渡した場合は、正常終了扱いであることがわかります。

echo $?
0

exit(数値)で、プログラムを強制終了&Statusの数値を返す

exit()では、0は正常終了扱い、0以外の数値は異常終了扱いになっています。

<?php

// 正常終了・系統
exit;
exit();
exit(0);
exit('正常終了しました');

// 異常終了・系統 => 0以外の数値
exit(1);
exit(7);

?>

また、exit() に数値を渡した場合は、Status番号として扱われており、出力すると渡した数値が表示されるようになっています。

まずは次のPHPファイルを実行してみましょう。

<?php

$value = 25;
 
if ($value < 20){
    exit(0);

} else {
    exit(7);
}

上記のPHPファイルの実行結果をecho $?を使用して確認すると7が出力されます。

echo $?         
7

ステータス・ナンバーを返して処理を強制終了する

exitの具体的な使い方として、処理のエラーハンドリングとして異常系を検出した場合、

予め定義しておいたエラーコード(ステータス・ナンバー)をコントロール側に返してプログラムを終了するといった使い方もできます。

何番のエラーコード(ステータス・ナンバー)は、こういう意味とあらかじめ決めておけばどこでどんなエラーが起きたのか見極めやすくなります。

【PHP入門】プログラムを終了する方法(exit/die) から引用する のステータスを指定する処理をするSampleCodeがわかりやすいので引用します。

//ファイル読み込み処理
function FileRead($pass){

    //ファイルオープン
    if (!fopen($pass, 'r')){
        echo "ファイル[{$pass}]を正常に読み込めません". "\n";
        return 1;
    }

    /* 成功時の処理・・・ */
}

//ファイルパスを指定して関数を呼び出す
$file = 'sample/pass/sample-file.txt';
$ret = FileRead($file);

//ステータスが0以外だったら終了処理
if ($ret != 0){
    echo "異常終了:[{$ret}]". "\n";
    exit($ret);
}

die() と exit() の違い

ちなみに、die()は、exit()と同じくメッセージを出力してプログラムを終了するときに使用します。

言語仕様的に違いはなく、PHP-Manualにも次のとおり記載があります。

注意: この言語構造は、die() と等価です。

引用元: PHP-Manual: exit

記述方法も同様なので、好きな方を使いましょう。

Twitterやってます!Follow Me!

神聖グンマー帝国の逆襲🔥

神聖グンマー帝国の科学は、世界一ぃぃぃぃぃぃ!!!!!

PHP / Laravel書籍

参考・引用

  1. PHP-Manual: exit
  2. 【PHP入門】プログラムを終了する方法(exit/die) から引用する

最近の投稿