8

私はいくつかのコードがこれを行うのを見てきました:

if(something){
    echo 'exit from program';
    die;
}
...more code

そして、単に使用する他のものdie:

if(something)   die('exit from program');
...more code

プログラムを終了するタイミングに固有の違いはありますか?その後に続くコードに注意する必要がありますか? など

アップデート

私が主に尋ねているのは、それがコーディング スタイルなのか、それともある方法と別の方法でコード化されている本当の理由があるのか​​ということです。exit私はとの違いを尋ねているのではありませんdie

4

7 に答える 7

21

いいえ、違いはありません。"exit"どちらもSTDOUT に書き込み、プログラムを終了します。

die("exit")入力が少なく、コメントアウトが簡単で、意味が明確であるため、この方法をお勧めします。

「速度」に関しては、どちらが速いかを気にする必要はありません。あなたのプログラムは本当にすぐに死ぬ必要がありますか?

RE: あなたの最新情報

... プログラムを終了するタイミングの固有の違い ...

固有のものであろうとなかろうと、違いはありません。それらは同一です。2 番目のオプションdie('exit')は単一のステートメントであるため、ifステートメントで使用する場合は中かっこは必要ありません。これはdie、C スタイル言語のブロックとフロー制御とはまったく関係がありません。

RE: あなたのコメント/2 回目の更新

どちらに行くかdieは個人の好みの問題です。私が言ったように、それらは同一です。上記の理由から、2 番目のオプションを選択します。より短く、明確で、クリーンであり、私の意見では「より良い」と言えます。

との違いは、exit0以外のステータスを返すことができることです。一方、0 を返します。どちらの機能も「優れている」わけではなく、目的が異なります。dieexitdie

于 2011-04-28T21:04:36.577 に答える
1

変わりはない。

そして、あなたが死にかけているのに、なぜ速度差を求めるのですか。

于 2011-04-28T21:05:55.010 に答える
0

言語は、少なくともPHPマニュアルによれば、構成され、同等ですexit()die()その行に到達する必要があるときにexit()を使用し、その時点でスクリプトを停止します。一方、Die()は、発生してはならない状況用です。それが私にとって最も自然なことです。同意する必要はありません。

于 2011-04-28T22:04:59.193 に答える
0

ほとんどの場合、それはコーディング スタイルです。ただし、デバッグ メッセージを出力している場合は、エコーしてから死ぬ方が適切です。

echo "The frobnuticator blew up!";
die;

になる

//echo "The frobnusticator blew up!";
die;

もちろん、あなたはおそらく持っているでしょう

if ($debug) echo "The frobnusticator blew up!";
die;

(私の|)目にはどちらがはるかに簡単ですか

die($debug?"The frobnusticator blew up!":"");
于 2011-04-28T22:48:02.200 に答える
0

みんな違いがあります。DIE() は他の失敗可能な関数で使用できますが、エコーはエラーまたは例外としてキャッチする必要があります。

$query = mysql_query("SELECT * FROM tablename") OR DIE(mysql_error());

即時のキャッチ/ダイ シーケンスを提供します。

于 2011-04-28T21:34:57.657 に答える
0

PHPマニュアルから:

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

しかし、それでもdieexitには違いがあります:

die() を使用すると、文字列を投稿できます: die("エラーが発生しました");

exit() を使用しても同じ結果

<?php
    echo("An error occurred <br>");
    exit(0);
?>

または、cli または unix シェルの場合:

コマンド ラインで PHP を使用すると、 die("エラーが発生しました") は単に "エラーが発生しました" を STDOUT に出力し、通常の終了コード 0 でプログラムを終了します。

<?php
    fwrite(STDERR, "An error occurred \n");
    exit(0); //
?>
于 2015-01-02T16:39:20.297 に答える
0

あなたが投稿した特定の例で$statusは、 は文字列であるため、それらは等しいですが、マニュアルに記載されているように、常にそうであるとは限りません。

status が文字列の場合、この関数は終了直前にステータスを出力します。

status が整数の場合、その値は終了ステータスとして使用され、出力されません。終了ステータスは 0 から 254 の範囲である必要があります。終了ステータス 255 は PHP によって予約されており、使用されません。ステータス 0 は、プログラムを正常に終了するために使用されます。

したがって、代わりに'exit from program'出力したい場合は、42本当に行う必要があると言います:

echo 42; die();
于 2011-04-28T21:42:25.630 に答える