0

私の人生では理解できない奇妙な問題があります。まず、PHPMVCフレームワークを最初から開発しました。私が抱えている問題は、exit()呼び出しの後にヘッダーリダイレクトが実行されることです。

ルーティングプロセスの概要は次のとおりです。

  1. REQUEST_URIは取り除かれ、要求されたコントローラー、メソッド、および引数は、スクリプトの後半で使用される変数に設定されます。
  2. router.phpは、要求されたコントローラーが実際に存在するかどうかを確認します。存在しない場合はfalseを返しますが、すべてがチェックアウトするとtrueを返します。
  3. trueを返す場合、要求されたコントローラー、メソッド、および引数を実行します。
  4. falseが返された場合、ルーターはカスタム404ページへのリダイレクトを送信します。これはPHPのheader()関数を使用し、header( "Location:*");の後にexit()があります。

ステップ4は、問題が発生する場所です。要求されたコントローラーが存在するため実行され、要求されたビューが存在するためすべてが正しくロードされますが、ビューが正常にロードされた後にexit()が呼び出されても、リダイレクトが実行されます。

ルーターが続行してリダイレクトを起動する理由はありますか?

4

1 に答える 1

1

(@Tomasz :)のように推測するつもりはありませんがexit()、ブラウザが取得したhttpヘッダー(場所を含む)を尊重する場合でも。

実際、私が行っているのと同様のことで、エラーが発生した場合は、リダイレクトヘッダーを送信してから、リダイレクトexitにコントローラーで実行が続行されないことを確認します。

于 2010-09-13T13:23:42.707 に答える