質問
可能な重複:
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)これらの例では、exitとdieを交換し、その逆を交換することはできますか?
2)そして、これらの違いも.
乾杯!...
解決
によると 死ね! それはあります Exitと同等.そうです、あなたはそれらを交換することができます。
他のヒント
コマンドラインを使用する場合,
die("Error");
に"エラー"を出力します。 STDOUT
エラーコードで終了します 0
.
エラーコードで終了する場合 1
, 、あなたはする必要があります:
fwrite(STDERR, "Error");
exit(1);
コマンドラインまたはシェルスクリプトからphpスクリプトを実行しているときに便利で、スクリプトがゼロ以外の終了コードで終了しているかどうかを確認したい場合に役立ちます。
それは私が考えることができる一つの違いです。
追伸から得られた情報の上php.net/exit
Die()関数とexit()関数に違いはありません。彼らは両方とも同じで、同じように働いていました。
繰り返しになりますが、phpが両方の関数が同じである場合、なぜ両方の関数を保持するのかという質問です。両方の関数は、お互いの関数の別名です。
APIと下位互換性を維持するために、両方の機能が保持されます。
ここにもう一つの例があります:
is_int()とis_integer()も同じです。
PHPには、複数の名前で呼び出すことができるかなりの数の関数があります。いくつかのケースでは、複数の名前の中に好ましい名前がない場合があります。is_int()とis_integer()は、たとえば同じように適しています。しかし、APIのクリーンアップなどの理由で名前が変更された関数があり、古い名前は後方互換性のためにエイリアスとしてのみ保持されます。このようなエイリアスは、陳腐化や名前の変更につながる可能性があり、移植できないスクリプトにつながる可能性があるため、通常は悪い考えです。このリストは、古いスクリプトを新しい構文にアップグレードしたい人を助けるために提供されています。
エイリアス関数の完全なリストは、次のURLにあります:
http://php.net/manual/en/aliases.php
これがあなたを助けるかもしれません:)
die
のエイリアスです exit
機能。
Phpには多くの関数エイリアスがありますが、言語がどのように進化し、進化し、それを乗り越えてきたかのために、phpには多くの関数エイリアスがあ - http://www.php.net/manual/en/aliases.php.
dieはstderrではなくSTDOUTに引数を出力します(grepまたは2>/dev/nullはテストに役立ちます) dieはシェルの終了コードに0として戻りますが、exitは他のコードを返すことができます PHPでダイフルアナログを定義してみましょう:
function mydie($str){
echo $str.PHP_EOL;
exit(0);
}