こんにちは、大学院でIT系の研究を専攻している、ひらりんです。
PHPはサーバーサイドで動く言語で、世界中の多くのWebサイトがPHPによって記述されています。一括してコンパイルするのではなく、実行時に一行ずつコンパイルされることから、随時コードを確認できるのも、初心者が取り掛かりやすい理由のひとつです。
本記事では、PHPのexitについて説明します。プログラムにおいて、ある条件を満たしたときに処理を終わらせたいときなどがありますよね。しかし、言語によってメソッドが異なり、混乱しちゃうかもしれません。
PHPのexitについて基本的な扱い方を説明し、実際にプログラムに組み込むことを想定した解説も行うので、PHPの学習を始めた方やプログラムを書く予定の人はぜひ読んでみてください!
目次
そもそもexitとは?
exit関数とはどういう役割があるんでしょうか。ちなみに、exitは英語で「出口」という意味ですよね。プログラムにおいても同様で、処理内容の出口に向かわせる…つまり、処理を終了させる役割があります。if文などを用いたループ処理によく用いられたりする、とても便利な機能です。
例えば、年齢が1歳ずつプラスされていく変数に対して、80歳を超えたらループ処理を終えたいといったプログラムを書く際に有効的です。もちろん、if文で年齢を格納している変数に対して条件を設けることで、同様のプログラムを書くこともできます。
しかし、ループ処理内にて、スクリプトの途中で終了させたい場合や、エラーが発生した時のステータスを変更したい場合に、exitはとても有効的です。exitを使わなくても、確かにプログラムを書くこともできますが、exitを適切に使うことで、より高品質なサービスを作成することもできます。
では、実際の使い方について見ていきましょう。
PHPのexit関数
exit関数の基本的な使い方や、exit関数を実際に利用したプログラムについて説明します。
基本構文
1 2 |
// メッセージを表示させたい場合 exit(文字列); |
exit関数は、このように使います。順に見ていきましょう。
ループ処理などを終了させるときに、メッセージを表示させたい場合は、exitの直後の括弧内に表示させたい文字列を指定してください。そうすることで、処理を終了させたときに、指定した文字が表示されます。文字を表示させなくていい場合は、何も記述せずに空欄にしてください。
実践コード例
ここからは、exit関数を実際に利用したプログラムを用いて解説します。ここでは、exit関数を利用し、ループ処理を終了させたときに文字列を表示させるプログラムが記述されています。
1 2 3 4 5 6 7 8 9 |
for($num = 3; $num < 10; $num++){ print("Aさんは". strval($num). "歳になりました"); if($num == 6){ exit("小学生になりました"); } print("12ヶ月経ちました"); } |
for文を用いたループ処理を実行するプログラムです。上から順に見ていきましょう。
1行目で、for文を定義しています。変数$numの初期値や条件、増減式を指定しています。2行目と8行目ではprint関数を用いて、文字列を表示させるようにしています。なお、2行目のprint関数内で利用されているstrval関数は、変数の型をstring型に変換する役割があります。
4行目から6行目にかけて、if文が定義されていますね。if文の条件は、「変数$numが6だったら」という条件が設けられており、条件が一致した場合に、if文内のexit関数の処理が実行されます。ここで、exit関数が実行された段階で、for文のループ処理が終了します。
このプログラムを実行すると、以下のように表示されます。
1 2 3 4 5 6 7 8 |
Aさんは3歳になりました 12ヶ月経ちました Aさんは4歳になりました 12ヶ月経ちました Aさんは5歳になりました 12ヶ月経ちました Aさんは6歳になりました 小学生になりました |
このように、for文内に書かれた処理が実行されて、$numが6になったときに、if文内の処理が実行されて、「小学生になりました」と表示されてループ処理が終了します。
なお、PHPのfor文について詳しく知りたい方は、以下の記事を参考にしてください。
【PHP入門】よくわかるfor文の使い方!exit関数の応用的な使い方
続いて、exit関数の応用的な使い方として、終了ステータスを指定する方法や、実際の使用例について見ていきます。exit関数を用いることで、呼び出した関数や、ファイルを読み込もうとした際に、エラーが発生した場合、指定したエラーコードや別途定義されているエラーコードを返したうえで、プログラムを終了させることができます。詳しく見ていきましょう。
なお、ステータスについて詳しく知りたい方は、以下の記事を参考にしてください。
HTTPステータスコードってなに?ステータスを指定したexit関数の構文
1 2 |
// 終了ステータスを指定したい場合 exit(値); |
このように、exitの直後に数値を指定することで、処理が終了した時の終了ステータスを指定することができます。ここで、終了ステータスとは、処理内容や委任されたタスクを実行し、完了した際に親プロセスや呼び出した側に引き渡す値のことを言います。特に問題なく、処理内容が実行し終えた場合は、「0」が終了ステータスとして引き渡されます。
では、exit関数を用いて終了ステータスを指定した、実際のプログラムについて見てみましょう。
ステータスを指定した実践コード例
1 2 3 4 5 6 |
$file_pass = '/project/data/file_1'; // ファイルのパスを指定 if (!fopen($file_pass, 'r')){ print("ファイルが読み込めませんでした"); exit(10); } |
ここでは、指定したファイルのパスが読み込めなかったときに、例外処理が実行されるプログラムを記述しました。上から順に見ていきましょう。
1行目で、ファイルのパスを変数$file_passに格納しています。3行目からはif文を用いて、例外処理を書いています。ここでは、fopen関数を用いて、ファイルの読み込みを実行しています。fopen関数の前に、エクスクラメーションマーク「!」があることで、「$file_passのファイルが読み込めなかったら」という条件になっています。
if文内の処理では、「ファイルが読み込めませんでした」と表示されたのち、exit関数を用いて終了ステータスを10に指定していますね。これで、エラーが発生した場合に、エラーコードが10だったら、ファイルが正常に読み込めなかったことが分かります。
ここで、fopen関数について詳しく知りたい方は、以下の記事等を参考にしてください。
【PHP】テキストファイルを出力する方法なお、PHPのexit関数については、以下の記事でも紹介されています!より理解を深めたい方や、実践利用の参考にしたい方は、ぜひ確認してみてください。
【PHP】header関数のLocationを使ってリダイレクトする方法まとめ
いかがでしたでしょうか?今回は、PHPのexitについて説明しました。
PHPのexitでは、強制的にプログラムの処理を終了させられる、とても便利な機能です。もちろん、正常終了する際には必要ないかもしれませんが、exitの特徴を活かし、ぜひ理解を深めてWebサービス作成やシステム構築に活かしてください。