PHPで、include()関数またはrequire()関数を使用して別のスクリプトでコードの実行を開始した場合、子内から親スクリプトを終了する方法はありますか?
だから私はparent.phpにこれを持っていると言います:require('child.php');
そしてこれはchild.phpにあります:exit();
それはchild.phpだけ、またはparent.phpも終了しますか?
parent.phpにコードを追加せずに、child.php内からparent.phpを終了する方法はありますか?
これは、PHPの精巧なカスタム404エラーページ用であり、ErrorDocumentを使用してApacheによって呼び出されたかどうか、またはユーザーが存在しないカスタムCMSからページを要求したかどうかを検出します。後者の場合は、404.php(子)とそこからの出力を要求し、親の実行を続行しないようにします。
含まれている/必要なスクリプト内から親PHPスクリプトを終了することが可能かどうか誰か知っていますか?
exit();
それはchild.phpだけ、またはparent.phpも終了しますか?
スクリプト全体が終了します。
それをしたくないが、インクルードスクリプトに戻る場合は、インクルード内からreturn
できます。
return
を探しています。コマンド。これにより、child.phpのみの実行が終了し、その後、parent.phpが処理されます。
含まれている/必要なスクリプト内から親PHPスクリプトを終了することが可能かどうか誰か知っていますか?
使用できます
die();
任意の時点で任意のスクリプトのさらなる実行を終了します。 Dieを使用すると、親スクリプトも終了します。
die("End");
「終了」を出力します。
実際、exit;
のchild.php
行は、現在のphpプロセスを終了します。つまり、parent.php
は正常に終了します。
例外をスローしてスクリプトを終了し、親スクリプトの1つでキャッチすることもできます。
このようにして、どのスクリプトを終了し、「include/require」ファイルのスタックのどこで続行するかを正確に制御できます。
die
とexit
は、どちらも害を及ぼすことなく終了します。これは、キャッチまたは元に戻すことができないアプリケーションレベルのコマンドです。
インクルードファイルが存在する必要があるが、メインスクリプトから続行する場合は、returnを使用できます。
リターン
(PHP 4、PHP 5、PHP 7)
returnは、プログラム制御を呼び出し元のモジュールに返します。実行は、呼び出されたモジュールの呼び出しに続く式で再開されます。
関数内から呼び出された場合、returnstatementは現在の関数の実行をただちに終了し、その引数を関数呼び出しの値として返します。 returnは、eval()ステートメントまたはスクリプトファイルの実行も終了します。
グローバルスコープから呼び出された場合、currentscriptファイルの実行は終了します。現在のスクリプトファイルが含まれている、または必要な場合、制御は呼び出し元のファイルに戻されます。さらに、現在のスクリプトファイルがインクルードされている場合、returnに指定された値は、include呼び出しの値として返されます。メインスクリプトファイル内からreturnが呼び出された場合、スクリプトの実行は終了します。現在のスクリプトファイルがphp.iniのauto_prepend_fileまたはauto_append_fileconfigurationオプションによって名前が付けられている場合、そのスクリプトファイルの実行は終了します。
exit()
を使用すると、スクリプトの実行が停止し、子とすべての親が終了します。
あなたは例外を投げることを試みることができます:
throw new Exception('An Error Ocurred');