15

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

dieとの違いで完全に混乱していexitます。

ほとんどのプログラマーは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)そしてこれらの違いも。

乾杯...

4

5 に答える 5

17

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

于 2012-10-03T06:21:45.603 に答える
13

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

die("Error");

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

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

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

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

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

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

于 2012-10-03T06:38:16.770 に答える
9

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

繰り返しますが、質問は、phpが両方の関数が同じである場合にそれらを保持する理由です。両方の関数は、他の関数のエイリアスです。

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

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

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

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

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

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

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

于 2012-10-03T06:35:22.253 に答える
6

die関数のエイリアスですexit

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

于 2012-10-03T06:31:54.500 に答える
5

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

function mydie($str){
  echo $str.PHP_EOL;
  exit(0);
}
于 2012-10-03T07:15:36.207 に答える