2013-12-16 22 views
5

PHPスクリプトで私はいくつかのテストをして、スクリプトの後にHTMLページを持っています。phpスクリプトの最後にdie()またはexit()関数が必要ですか?

テストが失敗すると、die( "Test 1 failed")と呼ばれます。 テストが失敗しない場合は、PHPスクリプトの最後に到達しますか?>そして、PHPスクリプトの後にhtmlコードをロードします。

これは良い手順ですか?または私はPHPスクリプトの終わりの前にdie()またはexit()を書く必要がありますか?

+1

スクリプトが最後に到達する米国特許には、とにかく終了します。 – George

+0

これを読んでください:http://stackoverflow.com/questions/1795025/what-are-the-differences-in-die-and-exit-in-php?rq = 1 – Karthik

+1

シェル環境で使用するときのように、スクリプトの戻りコード。ほとんどの用途、特にコンテンツを生成するWebサーバー上では、以下の回答ごとに必要ではありません。テスト用の – CompuChip

答えて

5

いいえあなたはこれを書いてはいけません。これはではなく、ベストプラクティスです。スクリプトが致命的なエラーなしで終了した場合、終了します。

これは「テスト」を意味する場合は間違っています。テストはunit testsを使用して行う必要があります。 PHPの場合はphpunitです。試してみてください、それはあなたのコードをテストする適切な方法です。

編集:CompuChipはコメントの中で、エラーコードを返すべきであるPHPベースのシェルスクリプトを作成しているときには、終了の唯一の有用な使用例があります。 See the parameter section of the documentation for the exit() function

+0

は、ユーザーをデータベースに登録することを意味します。何かが失敗した場合、それは失敗したテストです。 – newtphp

+0

これはユニットテストによってテストすることができます。あなたが "テストする"方法はテストではなく、デバッグです。そして、 "死んでいる"の代わりにあなたのスクリプトは適切なエラーメッセージをユーザに伝えますが、スクリプトを "キルする"だけではありません。 – burzum

0

これらの関数は、スクリプトの最後には存在するため、スクリプトの最後に使用する必要はありません。

0

非常に特殊な場合を除いて、本番用PHPスクリプトではdie()またはexitを使用しないでください。代わりに、コードパスを再作成して、スクリプトを早期に終了するのではなく、ユーザーにエラーメッセージを表示するだけです。

-1

いいえ! これは推奨されていません

trigger_errorまたはerror_logを使用してerror.logにテストを記録してください。次にそれを確認します。

+0

なぜそれが推奨されていないのかを説明し、可能であれば、そのソースを提供してください。 –

+3

編集した私の答え –

1

いいえ、あなたはそれを必要としませんが、コンソールPHPスクリプトを書くときは、スクリプトがすべてのものを正しい方法で完了しているかどうかをBashなどで確認してください。それはexit()またはdie()を使用するときです

0

sciptの最後にダイや出口を置く必要はありません。 exitを使用して、特定の終了コード(デフォルトでは0)でスクリプトを終了することができます。

例えば

$ php -r "/* does nothing */;" 
$ echo $? 
0 
$ php -r "exit(123);" 
$ echo $? 
123 

http://php.net/exit

+0

便利な追加情報ありがとう – newtphp

1

PHPスクリプトの末尾に必要なダイ()またはexit()関数のですか?

いいえ、PHPはスクリプト自体を終了します。スクリプトがインクルードされたファイル(別のファイルから呼び出されたもの)の場合は、インクルードされたファイルにスクリプトを終了し、インクルードした場所の後ろに元のファイルのコードを続けます(コードがある場合)。

だから、die()またはexit()をあなたの好きな場所に置いてください。

テストの場合は、テストする各コードブロックの後に配置します。 PHPが私に何かを見せて、それが正しく構築されているかどうかを確認するための配列を出力するなど、停止したい場合は、テストのいくつかの部分でそれらを使用します。
例:

print_r($array); 
exit(); 

は、他のコードのテストでは、私は時々、ちょうどそのような場合/他の内など、など、「セクションAが働いていた」エコー。コードの特定の部分が動作しているかどうか、またはいくつかの基準が満たされているかどうかを知りたい場合(基本的には、PHP自体がコード内でどこに行くかを追跡できます)

これらのすべては、生産コードにdie()またはexit()を使用しないでください。よりフレンドリーで制御されたメッセージングセットアップを使用する必要があります。セキュリティ上の理由や視覚的な理由から、「ERROR SomethingSecretを読み込めませんでした」などの情報を潜在的に与えることができます。また、半分の負荷だけをページングし、オンスクリーン・エラー・メッセージを出すと、エンド・ユーザーに何も意味しないように見えます。ドキュメントから
PHP Error handling: die() Vs trigger_error() Vs throw Exception