私はまだ PHP の学習を制限しています。exit()
スクリプトを終了するとき、die();
と?の違いは何return;
ですか?:
- 同じファイル内 (単一のスクリプト ファイル)
- インクルードの子内
- インクルードの親内
Return は値を返します。これは何でもかまいませんが、関数用です。
die
およびexit
(同等の機能)スクリプトの実行を終了します。
return
プログラム制御を呼び出しモジュールに戻します。実行は、呼び出されたモジュールの呼び出しに続くステートメントから再開されます。
関数内から呼び出された場合、return ステートメントは現在の関数の実行を直ちに終了し、その引数を関数呼び出しの値として返します。return は、eval() ステートメントまたはスクリプト ファイルの実行も終了します。
グローバル スコープから呼び出された場合、現在のスクリプト ファイルの実行は終了します。現在のスクリプト ファイルが含まれているか必要な場合、制御は呼び出し元のファイルに戻されます。さらに、現在のスクリプト ファイルがインクルードされている場合は、return に指定された値がインクルード呼び出しの値として返されます。メイン スクリプト ファイル内から return が呼び出されると、スクリプトの実行が終了します。現在のスクリプト ファイルが php.ini の auto_prepend_file または auto_append_file 構成オプションによって指定された場合、そのスクリプト ファイルの実行は終了します。
die
対exit
PHPにおけるdie()
との違いは、その起源です。exit()
の PHP マニュアルdie
:
この言語構造は と同等
exit()
です。
の PHP マニュアルexit
:
注: この言語構造は と同等
die()
です。
関数エイリアスのリストに関する PHP マニュアル:
die()
他の言語でexit()
は異なりますが、PHP では同じです。
まだ別のPHP暴言から:
... C および Perl コーダーとして、私は答える準備ができていました。 " しかし、PHP の乱雑な構文の世界にいることを思い出しました。
PHP では、exit() と die() は同じです。
設計者は明らかに「うーん、 C から exit() を借りましょう。そして、Perl からもそのままdie()を使用すれば、Perl の人々はおそらくそれを気に入るはずです。おっと! これで 2 つの exit 関数ができました! 両方が両方になるようにしましょう」と考えました。文字列または整数を引数として取り、それらを同一にすることができます!"
最終的な結果として、これは物事を「簡単」にするのではなく、混乱を招くだけです。C および Perl のコーダーは引き続き exit() を使用して整数の終了値のみをトスし、die() を使用してエラー メッセージをトスし、失敗して終了します。初心者や第一言語としての PHP を使用している人は、おそらく「うーん、2 つの終了関数のうち、どれを使用すればよいのか?」と疑問に思うでしょう。マニュアルには、exit() と die() がある理由が説明されていません。
一般に、PHP にはこのような奇妙な冗長性がたくさんあります。異なる言語のバックグラウンドを持つ人々にやさしくしようとしますが、そうしているうちに混乱を招く冗長性が生まれます。