web-dev-qa-db-ja.com

「die」と「exit」の違い

重複の可能性:
PHPのdie()とexit()の違いは何ですか?

dieexitの違いに完全に混乱しています。

ほとんどのプログラマーはこのようにdieを使用します。

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');  //don't see mysql_* problem it is just example
if (!$link) {
    die('Could not connect: ' . mysql_error());
}

このようにexitを使用します

$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
   or exit("unable to open file ($filename)");

そこの機能によると、どちらもスクリプトの実行を終了するので、違いはないと思います。

私の質問は

1)これらの例では、ダイを出口と交換したり、その逆を行ったりできますか?

2)そしてこれらの違いも。

乾杯...

15
Yogesh Suthar

Die によると、exitと同等です。そうです、あなたはそれらを交換することができます。

17
Adam Plocher

コマンドラインを使用する場合、

die("Error");

STDOUTに「エラー」と出力し、エラーコード0で終了します。

エラーコード1で終了する場合は、次のことを行う必要があります。

fwrite(STDERR, "Error");
exit(1);

コマンドラインまたはシェルスクリプトからphpスクリプトを実行しているときに、スクリプトがゼロ以外の終了コードで終了したかどうかを確認したい場合に便利です。

それは私が考えることができる1つの違いです。

P.S.上記の情報はphp.net/exitから取得しました

13
Prasanth

Die()関数とexit()関数に違いはありません。それらは両方とも同じであり、同じように機能します。

繰り返しになりますが、phpが両方の関数を同じ場合に保持するのはなぜですか。両方の関数は、互いの関数のエイリアスです。

APIと下位互換性の維持により、両方の機能が維持されます。

もう1つの例を次に示します。

is_int()とis_integer()も同じです。

PHPには、複数の名前で呼び出すことができる関数がかなりあります。複数の関数の中に優先名がない場合もあります。is_int()とis_integer()は同等に優れています。たとえば、APIのクリーンアップなどの理由で名前が変更された関数があり、古い名前は下位互換性のためにエイリアスとしてのみ保持されます。これらの種類のエイリアスはバインドされている可能性があるため、通常は使用しないことをお勧めします。このリストは、古いスクリプトを新しい構文にアップグレードしたい人を支援するために提供されています。

次のURLにあるエイリアス機能の完全なリスト:

http://php.net/manual/en/aliases.php

これがあなたを助けますように:)

9
drsndodiya

dieexit関数のエイリアスです。

言語がどのように進化し、進化し、それを乗り越えたかにより、phpには多くの関数エイリアスがあります http://www.php.net/manual/en/aliases.php

6
Justin John

dieはSTDERRではなくSTDOUTに引数を出力します(grepまたは2>/dev/nullはテストに役立ちます)dieはシェルの終了コードを0として返しますが、exitは他のコードを返すことができます。PHPで完全なアナログを定義できます。

function mydie($str){
  echo $str.PHP_EOL;
  exit(0);
}
5
Maxim Antonov