質問

これを行うコードをいくつか見たことがあります。

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

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

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

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

アップデート

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

役に立ちましたか?

解決

いいえ、違いはありません。彼らは両方とも書きます "exit" プログラムをstdoutして終了します。

私は die("exit") メソッドはタイピングが少なく、コメントアウトしやすく、意味的に明確になります。

「スピード」に関しては、なぜあなたはどちらがより速いのか気にするのですか?あなたはあなたのプログラムが本当に迅速に死ぬ必要がありますか?

Re:更新

...プログラムを終了するときの固有の違い...

がある 番号 違い、固有またはその他。それらは同じです。 2番目のオプション、 die('exit'), 、単一のステートメントであるため、で使用する場合はブレースを必要としません if 声明;これはとは何の関係もありません die C-Style言語でのブロックとフロー制御に関係しています。

Re:コメント/2番目のアップデート

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

間の違い exitdie それです exit ゼロ以外のステータスを返すことができます die 0を返します。どちらの関数も「より良い」ものではなく、異なる目的を果たします。

他のヒント

変わりはない。

そして、なぜあなたが死んでいるので速度の違いを求めるのか。

違いがあります。 die()は他のfailable関数で使用できますが、エコーはエラーまたは例外としてキャッチする必要があります。

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

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

あなたが投稿した特定の例については、それらは平等です。 $status 文字列ですが、 マニュアル これが常にそうであるとは限らないと言います:

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

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

したがって、代わりに 'exit from program' あなたは出力したかった、言った 42 あなたは本当にする必要があります:

echo 42; die();

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

主にコーディングスタイルです。ただし、デバッグメッセージを出力している場合は、エコーの方が優れています。

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!":"");

PHPマニュアルから:

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

しかし、それでも両者の間には違いがあります 死ぬ そして 出口 :

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); //
?>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top