5005


phpでapiを開発しています。  
フレームワークにはSilexを利用し、お作法に則って開発をしていますが、

[code]

    // web/index.php
    
    require_once __DIR__.'/../vendor/autoload.php';
    
    $app = new Silex\Application();
    
    // 定義をここに書きます。
    
    $app->run();
    
[/code]

> <http://silex-users-jp.phper.jp/doc/html/usage.html>

$app->run()のあとにexitする必要があるか  
ご教授を頂きたいです

参考サイトにはexitの記述ありませんが、  
たまに処理の終わりにexitしている記述も見かけます。

exitするとどんなメリットがあるか知りたいです。

宜しくお願いします。

開発環境は  
PHP 5.5.16  
Server version: Apache/2.2.15 (Unix)  
mod_php


CC BY-SA 3.0
2015-01-21T10:32:35.487
4995
2015-01-22T01:13:38.200
2015-01-22T01:02:14.283
4978
5839
question
php apache silex
phpでexitする必要はありますか？


exitは必要ありません。  
アプリケーションのインスタンスを作成し、runを実行するだけでOKです。

では、なぜexitが必要ないかもう少し説明します。  
exit をコールすることでその時点で強制的にスクリプトを終了しますが、eixtをコールしなくてもスクリプトは正常終了します。

また、webアプリケーションの最後はresponseをブラウザに返すことですが、

  * レスポンスステータスコード
  * レスポンスヘッダ

をどうするかをフレームワークである Silex がよしなにやってくれます。

もし、run()の後にexitを書いてるコードがあるとすれば、それは

  * 不要なexit
  * バッチ処理用のスクリプトで終了ステータスを明示したかった

のどちらかじゃないかなと思います。

また runの後ではなく、スクリプト中で強制的にレスポンスを返して処理を終了したい場合にはexitを使うことはあります。  
参照: <https://github.com/silexphp/Silex-
Skeleton/blob/master/web/index_dev.php#L12>


CC BY-SA 3.0
2015-01-21T12:16:28.310
5005
2015-01-21T13:35:34.927
2015-01-21T13:35:34.927
33
5432
4995
answer


Silex で exit をしない理由についてはすでに回答がありますので、PHP一般の exit の意味について補足します。

PHP では通常 `exit` を行う必要はありません。（実行したスクリプトの最終行まで行けば終了するため）

`exit` を使う場合は主に以下の様な場合が考えられます。

  * スクリプトの途中で終了する場合など、処理の途中で（残りの処理を行わずに）終了させたいとき。
  * メソッド内などソース最終行以外で終了する場合など、プログラムがそこで終了することを明示したいとき。
  * エラーなどが発生した場合などで、プログラムの終了ステータスを変更したいとき。（ステータスコードをexitの引数として渡すことで、終了ステータスを変更できます。）

例えば、Web プログラミングではリダイレクトの処理を行う場合、リダイレクトを行った後はその後の処理を行う必要がないためそこで `exit`
を書いてプログラムの終了を明示するような場合があります。（フレームワークを使用している場合、フレームワークでそのように実装されていることもあります）


CC BY-SA 3.0
2015-01-21T12:29:25.740
5007
2015-01-22T01:13:38.200
2015-01-22T01:13:38.200
2944
2944
4995
answer