176

それらの間に違いはありますか?それらを使用するのは好みの問題ですか?どちらか一方を使用すると、何か利点がありますか? セキュリティ的にはどちらが良いですか?

4

7 に答える 7

184

requireファイルをロードできない場合、PHP Fatal Error がスローされます。(実行停止)

includeファイルを読み込めない場合は警告を生成します。(実行は継続)

以下はinclude と require の違いの素敵な図です:

ここに画像の説明を入力

From: require と include php の違い (by Robert; 2012 年 11 月)

于 2010-09-03T07:52:37.927 に答える
151

違いについては、次のページのrequire詳細なPHPマニュアルで説明されています。

requireinclude失敗した場合を除いて同じですが、致命的なE_COMPILE_ERRORレベルのエラーも発生します。つまり、スクリプトを停止しますが、includeはE_WARNING、スクリプトの続行を許可する警告()のみを発行します。

例については、@efritzの回答を参照してください

于 2010-09-03T07:53:58.037 に答える
5

includeファイルをロードせずにスクリプトを続行してもかまわない場合 (ファイルが存在しない場合など) に使用し、(そうすべきではありませんが) 警告エラー メッセージが表示されても問題ありません。

を使用requireすると、指定されたファイルを読み込めない場合にスクリプトが停止し、致命的なエラーがスローされます。

于 2010-09-03T08:04:54.760 に答える
2

他の人が指摘したように、唯一の違いは、require が致命的なエラーをスローし、include がキャッチ可能な警告であることです。どちらを使用するかに関して、私のアドバイスは、含めることに固執することです。なんで?警告をキャッチして、エンド ユーザーに有意義なフィードバックを提供できるからです。検討

  // Example 1.
  // users see a standard php error message or a blank screen
  // depending on your display_errors setting
  require 'not_there'; 


  // Example 2.
  // users see a meaningful error message
  try {
      include 'not_there';
  } catch(Exception $e) {
     echo "something strange happened!";
  }

注意: たとえば 2 を機能させるには、ここで説明されているように、エラーから例外へのハンドラーをインストールする必要がありますhttp://www.php.net/manual/en/class.errorexception.php

  function exception_error_handler($errno, $errstr, $errfile, $errline ) {
     throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
  }
  set_error_handler("exception_error_handler");   
于 2010-09-03T08:23:10.433 に答える
0
<?PHP
echo "Firstline";
include('classes/connection.php');
echo "I will run if include but not on Require";
?>

コードを使用した非常に単純な実用的な例。 最初のエコーが表示されます。includeまたはrequireの前に実行されるため、includeまたはrequireを使用してもかまいません。

結果を確認するには、コードの 2 行目で意図的に間違ったパスを指定するか、ファイル名を間違えます。したがって、2 番目のエコーが表示されるかどうかは、 requireまたはincludeを使用するかどうかに完全に依存します。

requireを使用すると、2 番目のエコーは実行されませんが、includeを使用すると、どのようなエラーが発生しても、2 番目のエコーの結果も表示されます。

于 2017-01-10T12:49:59.687 に答える
-2

インクルードの場合、プログラムは終了せず、ブラウザに警告を表示しますが、要求プログラムは、ファイルが見つからない場合、終了し、致命的なエラーを表示します。

于 2013-02-13T16:58:15.530 に答える